1

我有一个绑定到 xml 文件的 DataGridView。我想按第一列排序并将值视为整数(而不是字符串)。

XmlDataDocument xml = new XmlDataDocument();
xml.DataSet.ReadXml("file.xml");

dataGridView.DataSource = new BindingSource(xml.DataSet, "Item");
  • 排序(IComparer)不起作用
  • Sort(DataGridViewColumn,ListSortDirection) 将所有值视为字符串
  • 未触发 SortCompare 事件

我该怎么做才能完成这项工作?继承DataGridView并覆盖Sort?排序绑定源?排序数据集?

给未来的读者的注意事项:

接受的答案不适用于我的代码片段。DataType 必须在加载数据之前更改。应手动创建数据集:

DataTable table = new DataTable("Item");
table.Columns.Add(new DataColumn("id", typeof(int)));
table.Columns.Add(new DataColumn("name", typeof(string)));

DataSet set = new DataSet();
set.Tables.Add(table);
set.ReadXml("file.xml", XmlReadMode.IgnoreSchema);

dataGridView.DataSource = new BindingSource(set, "Item");
4

1 回答 1

1

您需要更改 DataSet 以使列的 DataType 为System.Int32.

于 2009-12-20T17:49:20.623 回答