DataGridView.DataSource не имеет новой строки из сетки (.NET) - PullRequest
1 голос
/ 22 июля 2009

У меня есть сетка данных, которая изначально связана с пустой таблицей данных. Затем первая строка заполняется путем установки значений для столбцов строки CurrentRow.DataBoundItem сетки. Я ввожу новую строку вручную, набирая значения в последней пустой строке. Я нажал кнопку сохранения, которая делает: DataTable dt = (DataTable) MyGrid.DataSource .......

Я заметил, что число строк в dt составляет только 1 вместо двух, отображаемых в сетке. Однако, если я сначала нажму клавишу Enter в строке, а затем нажму кнопку «Сохранить», количество строк будет равно 3. Две заполненные строки плюс новая строка, вызванная клавишей Enter.

Как получить две строки, помещенные в таблицу данных, не нажимая клавишу Enter? (Я не хочу программно отправлять нажатие клавиши Enter)

Я пытался вызвать EndEdit () и UpdateCellValue (), чтобы принять новую строку, но источник данных по-прежнему показывает только одну строку.

Ответы [ 4 ]

1 голос
/ 14 августа 2012

если вы говорите о Windows Apllication, как я думаю, вы можете просто добавить ds.AcceptChanges ();

 if (txtUserId.Text.Trim() != "" && txtPasswoed.Text.Trim() != "" && txtUserName.Text.Trim() != "")
            {
                DataRow r = ds.Tables[0].NewRow();
                r["userName"] = txtUserName.Text.Trim();
                r["ID"] = txtUserId.Text.Trim();
                r["Password"] = txtPasswoed.Text.Trim();
                ds.Tables[0].Rows.Add(r);

                ds.AcceptChanges();

                txtPasswoed.Clear();
                txtUserName.Clear();
                txtUserId.Clear();
            }
0 голосов
/ 22 июля 2009

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

myGrid.DataSource = dt;
myGrid.DataBind(); <-----
0 голосов
/ 24 июля 2009

Мне пришлось добавить источник привязки, к которому привязывается сетка, а не привязку к объекту данных.

0 голосов
/ 22 июля 2009

Я недавно ответил на аналогичный вопрос , вам следует использовать Form.Validate (), чтобы отправить данные обратно в базовый бизнес-объект (ваш DataTable) перед сохранением изменений в базе данных.

...