C# 是否使用File.ReadAllLines验证DataGridView中的列?
我正在对一个名为“KPI”的列进行验证。 我正在做的是创建一个.txt文件,用于验证列 .txt文件如下所示。C# 是否使用File.ReadAllLines验证DataGridView中的列?,c#,winforms,datagridview,contains,datagridviewcolumn,C#,Winforms,Datagridview,Contains,Datagridviewcolumn,我正在对一个名为“KPI”的列进行验证。 我正在做的是创建一个.txt文件,用于验证列 .txt文件如下所示。 正如您在记事本中看到的,它有4个值 收入 销售量 大骗子 品牌骗局 验证会说,除此之外的任何东西都是“无效的” 下面是我用来从.txt文件中获取值的代码 列表字段=新列表(); var lines=File.ReadAllLines(@“\\SMITSHOME01\Home\u Folder\u 1$\vhernandez\My Documents\Visual Studio
正如您在记事本中看到的,它有4个值
列表字段=新列表();
var lines=File.ReadAllLines(@“\\SMITSHOME01\Home\u Folder\u 1$\vhernandez\My Documents\Visual Studio 2013\validate.txt”);
对于(int i=0;i
但我不太擅长循环,所以我想问是否有人能帮我做。
现在,我要做的就是这样
for (int i = 0; i < dataGridView.RowCount; i++)
{
//MessageBox.Show(dataGridView.Rows[i].Cells["KPI"].Value.ToString());
if (dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains(fields[i]))
{
//sb.AppendLine(dataGridView.Rows[i].Cells["KPI"].Value.ToString() + " is Valid.");
}
else if (dataGridView.Rows[i].Cells["KPI"].Value.ToString() == null || dataGridView.Rows[i].Cells["KPI"].Value.ToString() == "" || dataGridView.Rows[i].Cells["KPI"].Value.ToString() == "KPI" || dataGridView.Rows[i].Cells["KPI"].Value.ToString() == "Category")
{
}
else
{
//MessageBox.Show("Row not decimal:" + " [ " + dataGridView[h, i].Value.ToString() + "] in column " + dataGridView.Columns[h].Name);
sb.AppendLine(dataGridView.Rows[i].Cells["KPI"].Value.ToString() + " is **NOT** Valid.");
}
}
for(int i=0;i
我正在使用.Contains()
进行验证,但我总是得到System.ArgumentOutOfRangeException
,因为我的循环效率低下
我想在if.Contains()
中动态添加字段[]
,或者以某种方式引用它,有人能帮我吗
以下是表格的图片供参考:
我认为您的入住条件应该是另一种情况:
if(fields.Contains(dataGridView.Rows[i].Cells["KPI"].Value.ToString()))
@山科拉尔德:np。另外要注意的是:您不能用强类型列表或类似的东西绑定网格吗?这会使你的代码更简洁。你想解释一下吗?我对C#还是个新手。当然。我相信你把gridView绑定到了某个数据源,对吗?该来源的类型是什么?例如,如果您使用ado.net从SQL读取say,您可以更好地填充一些集合(例如列表)并将其绑定到gridView。这将帮助您利用漂亮的linq功能,而不是使用循环和所有功能。数据源来自我导入到DataGridView
的excel文件。
if(fields.Contains(dataGridView.Rows[i].Cells["KPI"].Value.ToString()))