【问题标题】:Check if rows exists before adding it to a datagridview在将行添加到 datagridview 之前检查行是否存在
【发布时间】:2017-06-04 18:19:57
【问题描述】:

我无法让此代码正常工作,我正在从 SQL (WHILE) 查询向 datagridview 添加行,但在执行此操作时,我需要在内部运行一个 foreach 来检查如果 row.Cells[0].Value 在添加之前存在,但我收到以下错误:

错误 1 ​​foreach 语句无法对“System.Windows.Forms.DataGridView”类型的变量进行操作,因为“System.Windows.Forms.DataGridView”不包含“GetEnumerator”C:\Users...的公共定义。 ......project1.cs

这是我的代码:

//dgData is a datagridview with columns created programmatically, this works already by the way.
dgData.ColumnCount = 3; 
dgData.Columns[0].Name = "ColumnA";      
dgData.Columns[0].Name = "ColumnB"; 
dgData.Columns[0].Name = "ColumnC";

string query1 = " SELECT * FROM ....... ";


SqlCommand cmd1 = new SqlCommand(query1, connection);
            //Create a data reader and Execute the command
            SqlDataReader dataReader1 = cmd1.ExecuteReader();



Application.DoEvents();
while (dataReader1.Read())
{

    string[] row1 = new string[] { dataReader1["columnA"].ToString(),     dataReader1["columnB"].ToString(), dataReader1["columnC"].ToString() };
    Boolean found = false;

    // this foreach is what doesn't work.
    foreach (DataGridViewRow row in dgData)
    {
         if (row.Cells[0].Value == dataReader1["columnA"].ToString())
         {
                 // row exists
                 found = true;
                 MessageBox.Show("Row already exists");                     
         }
    }

    if (!found)
    {
         dgData.Rows.Add(row1);
    }


}

【问题讨论】:

    标签: c# sql datagridview


    【解决方案1】:

    我不舒尔,但可能是你必须使用

    foreach (DataGridViewRow row in dgData.Rows)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      相关资源
      最近更新 更多