Проверьте, существуют ли строки, прежде чем добавлять их в представление данных.

У меня возникли проблемы с тем, чтобы этот код работал, я добавляю строки в datagridview из запроса SQL (WHILE), но при этом мне нужно запустить foreach внутри, чтобы проверить, есть ли < strong>row.Cells[0].Value существует до его добавления, но я получаю следующие ошибки:

Оператор foreach с ошибкой 1 не может работать с переменными типа «System.Windows.Forms.DataGridView», поскольку «System.Windows.Forms.DataGridView» не содержит общедоступного определения для «GetEnumerator» C:\Users ....... .........проект1.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);
    }


}

person AJ152    schedule 04.06.2017    source источник


Ответы (1)


Я не уверен, но может быть, вам придется использовать

foreach (DataGridViewRow row in dgData.Rows)
person Freak78    schedule 04.06.2017