使用File.ReadAllLines验证DataGridView中的列?

时间:2018-02-23 01:07:46

标签: c# winforms datagridview contains datagridviewcolumn

我正在对某个名为" KPI"的列进行验证。 我正在做的是制作一个用于验证列的.txt文件。

.txt文件如下所示。

enter image description here

正如您在记事本中看到的那样,它有4个值。

  1. 收入
  2. 销售量
  3. Gross Con
  4. Brand Con
  5. 除此之外,验证会说,"无效"。

    这是我用来从.txt文件中获取值的代码

            List<string> fields = new List<string>();
    
            var lines = File.ReadAllLines(@"\\SMITSHOME01\Home_Folder_1$\vhernandez\My Documents\Visual Studio 2013\validate.txt");
            for (int i = 0; i < lines.Length; i++)
            {
                fields.Add(lines[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.");
                    }
                }
    

    我正在使用.Contains()进行验证,但由于System.ArgumentOutOfRangeException循环效率低下,我总是得for

    我想在if fields[]中动态添加.Contains()或以某种方式引用它,有人可以帮助我吗?

    以下是参考表格的图片:

    enter image description here

1 个答案:

答案 0 :(得分:1)

我认为您的if条件检查应该是另一种方式:

if(fields.Contains(dataGridView.Rows[i].Cells["KPI"].Value.ToString()))