gpt4 book ai didi

dart - 实时更新bwu网格数据项并删除所选行

转载 作者:行者123 更新时间:2023-12-03 03:44:16 27 4
gpt4 key购买 nike

我在项目中使用bwu_datagrid,发现很难解决两个问题。

  • 如何使用上下文菜单删除通过网格中的复选框选择的行,该上下文菜单显示带有图标和单词的删除。
  • 实时更新网格dataItems。从前面的讨论中,我已经知道需要在哪里调用editor.commitChanges(),但是这样做没有成功。事实上,我的包含commitChanges()方法的代码引发了一个错误,即找不到该方法。我怀疑我可能使用不正确。

  • 如果可能的话,我将感谢.dart文件的完整更正代码。

    。镖
    import 'dart:html';
    import 'package:polymer/polymer.dart';

    //import 'package:epimss_clerking/epimss_clerking.dart';
    //import 'package:epimss_shared/epimss_shared.dart';
    //import 'package:epimss_shared/epimss_shared_import_ui.dart';

    import 'package:bwu_datagrid/bwu_datagrid.dart';
    //import 'package:bwu_datagrid/components/bwu_column_picker/bwu_column_picker.dart';
    import 'package:bwu_datagrid/datagrid/helpers.dart';
    //import 'package:bwu_datagrid/plugins/cell_selection_model.dart';
    import 'package:bwu_datagrid/plugins/checkbox_select_column.dart';
    import 'package:bwu_datagrid/editors/editors.dart';
    import 'package:bwu_datagrid/formatters/formatters.dart';
    import 'package:bwu_datagrid/plugins/row_selection_model.dart';
    import 'package:bwu_datagrid/core/core.dart';
    //import 'package:bwu_datagrid/editors/editors.dart';

    @CustomTag('medication-mediators-form')
    class MedicationMediatorsForm extends PolymerElement {
    @observable String type = '';
    String topic = '';

    BwuDatagrid grid;
    List<Column> columns = <Column>[];

    var gridOptions = new GridOptions(
    editable: true,
    enableAddRow: true,
    enableCellNavigation: true,
    asyncEditorLoading: false,
    autoEdit: true,
    autoHeight: true);

    List<MapDataItem> _dataItems = <MapDataItem>[];
    MapDataItemProvider dataItemsProvider;
    CheckboxSelectColumn checkboxColumn =
    new CheckboxSelectColumn(cssClass: 'bwu-datagrid-cell-checkboxsel');

    @published
    String get color => readValue(#color);
    set color(String value) => writeValue(#color, value);

    MedicationMediatorsForm.created() : super.created() {
    dataItemsProvider = new MapDataItemProvider(_dataItems);

    columns.add(checkboxColumn);
    columns
    ..add(new Column(
    name: 'Medication',
    id: 'medication',
    field: 'medication',
    editor: new TextEditor(),
    //validator: new Bwu_RequiredNounValidator(),
    sortable: true, minWidth: 100))
    ..add(new Column(
    name: 'Precipitant',
    id: 'precipitant',
    field: 'precipitant',
    editor: new CheckboxEditor(),
    formatter: new CheckmarkFormatter(),
    minWidth: 50))
    ..add(new Column(
    name: 'Reliever',
    id: 'reliever',
    field: 'reliever',
    editor: new CheckboxEditor(),
    formatter: new CheckmarkFormatter(),
    minWidth: 50))
    ..add(new Column(
    name: 'Exacerbator',
    id: 'exacerbator',
    field: 'exacerbator',
    editor: new CheckboxEditor(),
    formatter: new CheckmarkFormatter(),
    minWidth: 60));
    }

    void onMouseOutFired() {
    //grid.getEditController.commitCurrentEdit; //commitChanges();
    grid.deliverChanges();
    print('changes delivered');
    }

    @override
    void attached() {
    super.attached();
    topic = this.dataset['topic'];

    try {
    grid = $['grid'];

    grid
    .setup(
    dataProvider: dataItemsProvider,
    columns: columns,
    gridOptions: gridOptions)
    .then((_) {
    //grid.setSelectionModel = new CellSelectionModel();
    grid.setSelectionModel = (new RowSelectionModel(
    new RowSelectionModelOptions(selectActiveRow: false)));
    grid.registerPlugin(checkboxColumn);
    grid.onBwuAddNewRow.listen(addNewRowHandler);
    grid.onBwuCellChange.listen(onCellChangeHandler);
    grid.onBwuMouseLeave.listen(onBwuMouseLeaveHandler);
    });
    } on NoSuchMethodError catch (e) {
    print('$e\n\n${e.stackTrace}');
    } on RangeError catch (e) {
    print('$e\n\n${e.stackTrace}');
    } on TypeError catch (e) {
    print('$e\n\n${e.stackTrace}');
    } catch (e) {
    print('$e');
    }
    }

    void enableAutoEdit(MouseEvent e, dynamic details, HtmlElement target) {
    grid.setGridOptions = new GridOptions.unitialized()..autoEdit = true;
    }

    void disableAutoEdit(MouseEvent e, dynamic details, HtmlElement target) {
    grid.setGridOptions = new GridOptions.unitialized()..autoEdit = false;
    }

    void onBwuMouseLeaveHandler(MouseLeave e) {
    ///ERROR GENERATED THAT commitChanges CANNOT BE FOUND
    grid.getCellEditor().commitChanges();

    //_dataItems does not update in realtime -
    print(_dataItems);

    print('property changes delivered');
    }

    void onCellChangeHandler(CellChange e) {
    //print(_dataItems);

    _dataItems.forEach((MapDataItem item) {
    item.forEach((String key, dynamic value) {
    if (value == '') {
    print(key);
    }
    });
    });

    //eventBus.signal(new DaataEvent(_dataItems)..topic = this.topic);
    }

    void addNewRowHandler(AddNewRow e) {
    var item = e.item;
    grid.invalidateRow(dataItemsProvider.items.length);
    dataItemsProvider.items.add(item);
    grid.updateRowCount();
    grid.render();
    }
    }

    .html
    <!DOCTYPE html>

    <link href='../../../../packages/bwu_datagrid/bwu_datagrid.html' rel='import'>

    <polymer-element name='medication-mediators-form'>

    <template>

    <style>#grid {width: 380px; height: 400px;}</style>

    <div layout vertical center color='{{color}}'>
    <bwu-datagrid id='grid' class='margin-5-lr'></bwu-datagrid>
    </div>
    </template>
    <script type='application/dart' src='medication_mediators_form.dart'></script>
    </polymer-element>

    最佳答案

    我不确定您要如何使用复选框和上下文菜单。

    这是一个例子
    -how a context menu can be implemented
    -how to select rows using a checkbox

    删除行可以像

    var selectedRows = grid.getSelectedRows();

    List<core.ItemBase> rowsToDelete = <core.ItemBase>[];
    selectedRows.forEach((r) {
    rowsToDelete.add(data.items[r]);
    });
    rowsToDelete.forEach((r) => data.items.remove(r));

    grid.invalidate();
    grid.render();

    关于dart - 实时更新bwu网格数据项并删除所选行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30904962/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com