我是infragistics和winGrids的新手
我的SQL数据库包含以下表格
Costumers
[ID][Name]
另外,我有UserControl,它有winGrid并添加\删除按钮。
当UserControll变为时,活动的winGrid数据源被绑定到表
winGrd.DataSource = Tables.Costumers;
当用户想要从costumers表中添加\删除数据时,他会点击相关按钮。 表格相应更改,但网格中显示的数据未更改。 我用了
winGrd.Refresh();
但它没有效果
如何做到这一点,欢迎使用代码示例
感谢
---编辑---- 添加代码:
private void BtnAdd_Click(object sender, System.EventArgs e)
{
//...
DB.DataProxy.AddCostumer(txtType.Text);
winGrd.Refresh();
//...
}
AddCostumer方法最终会调用以下方法来更新客户表
public void AddCostumer(string type)
{
Costumers.InsertOnSubmit(new InsertOnSubmit{ Name = name});
}
答案 0 :(得分:3)
如果您的DataTable
正在更新,UltraGrid
应该会为您显示这些更改。你可以试试的是打电话
ultraGrid1.Rows.Refresh(Infragistics.Win.UltraWinGrid.RefreshRow.ReloadData);
或
ultraGrid1.Rows.Refresh(Infragistics.Win.UltraWinGrid.RefreshRow.RefreshDisplay);
答案 1 :(得分:2)
不确定,但是,从MSDN documentation on InsertOnSubmit()
开始 The added entity will not appear in query results from this table until after SubmitChanges has been called.
所以,也许,如果你想让结果立即显示在Costomers实体中然后在WinGrid中,你应该在SubmitChanges()上面的代码中调用
public void AddCostumer(string name)
{
Costumers.InsertOnSubmit(new Costumers() { Name = name});
// Submit the change to the database.
try
{
db.SubmitChanges();
}
catch (Exception e)
{
// message to the user???
}
}
答案 2 :(得分:0)
执行add / remove命令后,从数据库中重新提取数据并重做绑定。在所有这些之前将DataGridView.DataSource设置为null,以防万一;如果连接或任何其他与数据库相关的进程失败,您将不希望显示错误的数据。
答案 3 :(得分:0)
我认为这是因为您正在设置一个不实现IBindableList的DataSource,UltraGrid使用它来自动更新它更改的数据。 您可以尝试刷新它手动将DataSource设置为null并在需要显示新信息时再次重置DataSource。