将DataSet中的字符串转换为Int

问题描述 投票:0回答:1

排序在 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 时,问题并没有消失。

c# xml types type-conversion integer
1个回答
0
投票

您遇到的问题似乎与数据在 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,可以确保数据在显示之前格式正确,这应该可以解决排序问题。

© www.soinside.com 2019 - 2024. All rights reserved.