Добавить строки программно в DataGridTable - PullRequest
3 голосов
/ 01 января 2009

Как программно добавить строки в DataGridTable в C #? Когда пользователь выбирает опцию, я хочу заполнить DataGridTable свежими данными, которые я получаю, как показано ниже:

        connect.Open();
        MySqlCommand comm = connect.CreateCommand();
        comm.CommandText = getCustomerInvoices + customerID + "\'";
        MySqlDataReader r = comm.ExecuteReader();
        while (r.Read())
        {
            DataGridViewRow d = new DataGridViewRow();
            String[] parameters = new String[5];
            parameters[0] = r.GetValue(0).ToString();
            parameters[1] = r.GetValue(1).ToString();
            parameters[2] = r.GetValue(2).ToString();
            parameters[3] = r.GetValue(3).ToString();
            parameters[4] = r.GetValue(4).ToString();
            d.SetValues(parameters);
            invoiceTable.Rows.Add(d);
        }
        connect.Close();

Кажется, что происходит то, что я добавил новую строку в таблицу, но старые строки все еще там, и новая строка, похоже, не имеет никаких значений (куча пустых текстовых полей, и я знаю, что этот запрос возвращает один результат в моем тестовом примере).

Может кто-нибудь объяснить мне, что я должен делать?

Ответы [ 2 ]

3 голосов
/ 30 октября 2009

Полагаю, вам нужно вызвать .CreateCells (GridName), прежде чем вызывать setvalue

3 голосов
/ 01 января 2009

Я считаю, что Rows.Add () перегружен для массива строк. Если вы все равно создаете массив строк, почему бы не попробовать использовать его? т.е. вместо:

d.SetValues(parameters);
invoiceTable.Rows.Add(d);

вы бы просто использовали:

invoiceTable.Rows.Add(parameters);

В качестве альтернативы, если вы все еще хотите создать объект DataGridViewRow и вызвать для него setvalues, я думаю, вам нужно либо преобразовать массив в массив типа Object, либо передать каждое значение в качестве собственного аргумента вместо передачи массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...