排序在 dataGridView1 中不起作用,因为从 XML 读取时,数据是以字符串格式读取的。 (我得到的是 13-2-3-3-4,而不是 13-4-3-3-2)
DataXML = new DataSet();
FileStream fs = new FileStream(file_name, FileMode.Open);
xml_read = new XmlTextReader(fs);
DataXML.ReadXml(xml_read, XmlReadMode.Auto);
MyDatatable = DataXML.Tables[0];
foreach(DataRow row in DataXML.Tables[0].Rows)
{
row[3] = Convert.ToInt16(row[3]);
}
bindingSource1.DataMember = DataXML.Tables[0].ToString();
bindingSource1.DataSource = DataXML.Tables[0];
dataGridView1.DataSource = MyDatatable;
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
当我尝试转换为 int 时,问题并没有消失。
您遇到的问题似乎与数据在 DataGridView 中显示之前如何从 XML 读取和处理数据有关。
在将数据绑定到DataGridView之前,您需要确保数据已正确转换为数字类型。
DataXML = new DataSet();
FileStream fs = new FileStream(file_name, FileMode.Open);
xml_read = new XmlTextReader(fs);
DataXML.ReadXml(xml_read, XmlReadMode.Auto);
MyDatatable = DataXML.Tables[0];
foreach(DataRow row in MyDatatable.Rows)
{
row[3] = Convert.ToInt16(row[3]);
}
bindingSource1.DataMember = MyDatatable.TableName;
bindingSource1.DataSource = MyDatatable;
dataGridView1.DataSource = bindingSource1;
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
通过直接转换 MyDatatable 中的值,然后将 DataGridView 的 DataSource 属性设置为链接到 DataTable 的 BindingSource,可以确保数据在显示之前格式正确,这应该可以解决排序问题。