我有一个显示来自sql server的数据的数据网格。我有一个添加按钮,单击它时会打开一个新窗口,用户可以在其中放置正在添加的新项目的信息。当用户单击“保存”时,数据将保存到数据库中,但不会显示在网格中。有没有办法在关闭添加窗口时使datagrid绑定?如果需要更多信息,请与我们联系。感谢。
在我的主窗口中,它包含数据网格代码,我有一个添加按钮:
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
showAddWindow();
}
并且,showAddWindow方法是:
private void showAddWindow()
{
add addWindow = new add(dgDataView);
addWindow.Owner = this;
addWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner;
addWindow.ShowDialog();
}
答案 0 :(得分:1)
如果您知道新插入对象的ID,则可以将其发送到主窗体,并使用新信息在网格上调用Add.Row。这样您就不会回调数据库进行重新绑定。
答案 1 :(得分:0)
假设这是WinForms:
首先,在调用“添加”窗口时,使用ShowDialog()而不是Show()
在使用DataGrid的主窗体中,代码看起来像
private void btnAdd_Click(Object sender, EventArgs e)
{
DialogResult b = frmAdd.ShowDialog();
if(b == DialogResult.Ok)
{
// code to re-bind the grid here.
}
}
在frmAdd表单中,您需要使用Save按钮在更新数据库后将表单的DialogResult设置为DialogResult.Ok。
我猜你所尝试的是: private void btnAdd_Click(Object sender,EventArgs e) { frmAdd.ShowDialog(); //这里重新绑定网格的代码。 }
不同之处在于,使用ShowDialog()调用时,主窗体将等待“add”窗体关闭以继续执行。在我的第二个代码示例中,仅使用Show(),在用户有机会更新数据之前,在显示“添加”表单后立即重新绑定网格的代码。
(注意,我把这些代码放在了我的头脑中,而不是在Visual Studio中,所以它可能有错误)