我有一个datagridview,它最初绑定到一个空数据表。然后通过将值设置为网格的CurrentRow.DataBoundItem行的列来填充第一行。 我通过在最后一个空行中键入值手动输入新行。我点击了一个保存按钮: DataTable dt =(DataTable)MyGrid.DataSource .......
我注意到dt中的行数仅为1而不是网格中显示的两行。但是,如果我先在行上按Enter键然后单击“保存”,则行数为3.两个填充的行加上由Enter键引起的新行。
如何在不按Enter键的情况下将两行放在数据表中? (我不想以编程方式发送Enter键)
我试图调用EndEdit()和UpdateCellValue()来接受新行,但数据源仍然只显示一行。
答案 0 :(得分:1)
如果您正在讨论Windows应用程序,我可以添加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();
}
答案 1 :(得分:0)
我最近回答了similar question,您应该使用Form.Validate()将数据推送回基础业务对象(您的DataTable),然后再将更改保存到数据库中。
答案 2 :(得分:0)
正如Jason所说,确保在插入DataTable后重新绑定网格。
myGrid.DataSource = dt;
myGrid.DataBind(); <-----
答案 3 :(得分:0)
我必须添加网格绑定的绑定源,而不是绑定到数据表。