C # - 2 проблемы - ссылка на ячейку в DataGridView_RowsAdded вызывает ошибку нулевой ссылки;Не могу обновить базу данных данными DataGridView - PullRequest
0 голосов
/ 28 октября 2010

Я только начал писать клиентское приложение на C #, в большинстве случаев используя режим разработки Visual Studio.Имейте в виду, что я только начал изучать C # вчера - поэтому, если я делаю какие-то глупые ошибки, тогда, пожалуйста, скажите.

Что у меня есть

  • Aбаза данных;
  • DataSet, который связывается с таблицами Customer и Agent;
  • BindingSource, который связывается с DataSet;
  • CustomerBindingSource, который связывается с таблицей Customer BindingSource;
  • AgentBindingSource, который связывается с таблицей Agent BindingSource;
  • DataGridView, который связывается с CustomerBindingSource, столбцом AgentID которого является комбинированный список, который связывается с AgentBindingSource.

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

Код

void grdCustomers_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
    DataGridViewRow gvr = grdCustomers.Rows[e.RowIndex];
    String currID = gvr.Cells[0].Value.ToString();
    if (currID.Equals(""))
    {
        gvr.Cells[0].Value = "{id}";
    }
}
void button1_Click(object sender, EventArgs e) //Save button for when the user has finished editing.
{
    foreach (DataGridViewRow gvr in grdCustomers.Rows)
    {
        String currID = gvr.Cells[0].Value.ToString();
        if (currID.Equals("{id}"))
        {
            String g = Guid.NewGuid().ToString();
            gvr.Cells[0].Value = g;
        }
    }
    customerTableAdapter.Update(customerAppDS21.Customer);
}

Проблемы

  1. 4-я строка вызывает проблемы при попытке запустить программу.Это говорит о том, что ссылка на объект не установлена ​​на экземпляр объекта.Я думаю, что это вызвано gvr.Cells[0], но я не знаю почему.На мой взгляд, было бы разумно, если бы это вызывалось, когда настройка строки завершена (включая добавление всех ячеек).

  2. Я не могу заставить DataGridView связать данные сбаза данных.Я хочу, чтобы пользователь мог редактировать любое из значений, но при добавлении строки идентификатор не рассчитывается до тех пор, пока он не нажмет кнопку Сохранить (button1).

Iбыл бы очень признателен, если бы кто-то мог помочь мне с любой из этих проблем.

С уважением,

Ричард

Ответы [ 3 ]

1 голос
/ 28 октября 2010

это «Значение», которое является нулевым.Значение по умолчанию для ячейки всегда равно нулю.Это означает, что вы можете прочитать его до того, как он будет заполнен, или у этого столбца просто нет значения.Проверьте, является ли оно пустым, прежде чем пытаться получить к нему доступ.Если это ноль, то ячейка не имеет значения.

0 голосов
/ 17 ноября 2014

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

0 голосов
/ 28 октября 2010

По моему опыту, изменение содержимого ячейки проще в обработчике событий cellFormatted.

...