C# 设置数据绑定到int类型的DataGridView列
我正在通过C# 设置数据绑定到int类型的DataGridView列,c#,winforms,C#,Winforms,我正在通过WindowsForm控件将csv文件加载到DataGridView中,它会自动将所有列设置为字符串,以便按字母顺序排序 这些列是 Product description (String) Item Code (String) Current Count (Integer) On Order (String) 当对当前计数列进行排序时,其顺序为1、2、22、3、35、36、4、40,依此类推 此外,这些列和行不是硬编码的,我正在读取文件并将其加载到DataGridView控件中 如
WindowsForm
控件将csv
文件加载到DataGridView
中,它会自动将所有列设置为字符串,以便按字母顺序排序
这些列是
Product description (String)
Item Code (String)
Current Count (Integer)
On Order (String)
当对当前计数
列进行排序时,其顺序为1、2、22、3、35、36、4、40,依此类推
此外,这些列和行不是硬编码的,我正在读取文件并将其加载到DataGridView
控件中
如何使表的行相对于当前计数
列的值进行数字排序
这是用于将csv文件输入到DataGridView
private void Form1_Load(object sender, EventArgs e)
{
this.Size = new Size(800, 650);
dataGridView.Size = new Size(440, 550);
dataGridView.Location = new Point(15, 15);
dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
string[] dataFile = System.IO.File.ReadAllLines(path);
//File.Copy("C:\\StockFile\\stocklist.csv", "C:\\StockFile\\stocklistNew.csv", true);
string[] dataCollection = null;
int x = 0;
foreach (string text_line in dataFile)
{
dataCollection = text_line.Split(',');
if(x ==0)
{
for(int i = 0; i <= dataCollection.Count() -1; i++)
{
dataTable.Columns.Add(dataCollection[i]) ;
}
x++;
}
else
{
dataTable.Rows.Add(dataCollection);
}
}
dataGridView.DataSource = dataTable;
this.Controls.Add(dataGridView);
dataGridView.Columns["Item Code"].ReadOnly = true;
dataGridView.Columns["Product Description"].ReadOnly = true;
dataGridView.Columns["On Order"].ReadOnly = true;
}
private void Form1\u加载(对象发送方,事件参数e)
{
该尺寸=新尺寸(800650);
大小=新大小(440550);
位置=新点(15,15);
dataGridView.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.AllCells;
string[]dataFile=System.IO.File.ReadAllLines(路径);
//复制(“C:\\StockFile\\stocklist.csv”,“C:\\StockFile\\stocklistNew.csv”,true);
字符串[]数据收集=null;
int x=0;
foreach(数据文件中的字符串文本\行)
{
dataCollection=text_line.Split(',');
如果(x==0)
{
对于(int i=0;i,创建列时必须设置列类型
if (dataCollection[i] == "Count") // or "Current Count"
dataTable.Columns.Add(dataCollection[i], typeof(int));
else
dataTable.Columns.Add(dataCollection[i]); // typeof(string) by default
如果不明确指定它,类型将是string
您使用什么框架?该DataGridView
类来自何处?许多框架允许注册自定义比较器对列进行排序。您必须注册一个比较器,将字符串转换为数字,然后比较数字。此外,c你的代码是C++而不是C++吗?如果你使用Windows窗体DATAGIDVIEW,这里有一个教程,用于在列上进行自定义排序:是的,对不起,是C和Windows窗体,我不知道如何发布,我犯了那个错误。我玩了那些自定义排序,好像它们不在我的程序上工作。我在这里更新了我的代码,向您展示了我的表单是如何加载的,我想知道是否有一种方法可以告诉您何时到达“当前计数”列,以便将typeof设置为int??我也不确定我是否说得很清楚,但我希望能够单击标题,尽可能按int值从最小到最大的顺序排列。非常感谢你,亚历山大,我已经为此困扰了一段时间了。:)