Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 对颤振数据表中的列值进行排序_Sorting_Flutter_Dart_Datatable - Fatal编程技术网

Sorting 对颤振数据表中的列值进行排序

Sorting 对颤振数据表中的列值进行排序,sorting,flutter,dart,datatable,Sorting,Flutter,Dart,Datatable,我在对数据表中的列进行排序时遇到了严重困难 这是我的密码 SingleChildScrollView( scrollDirection: Axis.horizontal, child: DataTable( sortColumnIndex: 0, sortAscending: true, columnSpacing: 5.0, horizontalMargin: 10, columns: [ DataColumn(label:

我在对数据表中的列进行排序时遇到了严重困难

这是我的密码

  SingleChildScrollView(
  scrollDirection: Axis.horizontal,
  child: DataTable(
    sortColumnIndex: 0,
    sortAscending: true,

    columnSpacing: 5.0,
      horizontalMargin: 10,
    columns: [
      DataColumn(label: Text('Col1'),          
      DataColumn(label: Text('Col2'),numeric: false ),
      DataColumn(label: Text('Col3'),numeric: true ),
      DataColumn(label: Text('Col4'), numeric: true),
      DataColumn(label: Text('Col5'), numeric: true),
    ],
    rows: myList
        .map(
        ((element) => DataRow(
          cells: <DataCell>[
            DataCell(Text(element["Col1"]), placeholder: true,showEditIcon: false),
            DataCell(Text(element["Col2"].toString())),
            DataCell(Text(element["Col3"].toString())),
            DataCell(Text(element["Col4"].toString())),
            DataCell(Text(element["Col5"].toString())),
          ],
        )),
    ).toList(),
  ),
));
但我得到的只是第1列附近的一个箭头(ColumnIndex=0)——当你按下它时,它实际上什么都不起作用


我做错了什么

您必须在要排序的列中添加“onSort:,”并调用排序函数

bool sort;

DataTable(
        sortAscending: sort,
        sortColumnIndex: 0,
        columns: [
          DataColumn(
              label: Text("Col1"),
              onSort: (columnIndex, ascending) {
                setState(() {
                  sort = !sort;
                });
                onSortColum(columnIndex, ascending);
              }),
...
和onSortColum函数:

onSortColum(int columnIndex, bool ascending) {
    if (columnIndex == 0) {
      if (ascending) {
        yourDataList.sort((a, b) => a['name'].compareTo(b['name']));
      } else {
        yourDataList.sort((a, b) => b['name'].compareTo(a['name']));
      }
    }
  }

希望有帮助

myList是地图列表?传递
sortColumnIndex
只影响标题行中的指示器箭头。数据行不会自动排序。您应该打开并拨打
setState
然后谢谢。如何手动对数据进行排序?我的问题是我的列表不是来自一个类。它不是从类实例化的。也就是说,我不能调用myList.myElement等语法
onSortColum(int columnIndex, bool ascending) {
    if (columnIndex == 0) {
      if (ascending) {
        yourDataList.sort((a, b) => a['name'].compareTo(b['name']));
      } else {
        yourDataList.sort((a, b) => b['name'].compareTo(a['name']));
      }
    }
  }