[注意:为了清晰起见,我简化了我的示例]
假设我有一个带有两个表的Sqlite数据库:Items和Sectors:
项:
id_items : INTEGER PRIMARY KEY
name_item : VARCHAR(...)
id_sector : INTEGER
部分:
id_sector : INTEGER PRIMARY KEY
name_sector : VARCHAR(...)
我目前有一个绑定到 Items 表的datagridview。它被送入正常状态,并且该表将该扇区显示为datagridviewcomboboxcolumns。
因此,在我的Winforms CustomControl中,我有load()方法中发生的所有数据加载和绑定:
colSector.DataSource = m_dataContext.SectorTable;
colSector.DisplayMember = "name_sector";
colSector.ValueMember = "id_sector";
ItemsGrid.DataSource = new DataView(m_dataContext.ItemsTable);
我的数据视图的组合框装载了 Sectors 表中的数据。
我现在希望我的表单上有一个按钮,可以创建一个新的扇区:
我创建了一个txtbox(txtNewSector)和一个触发创建的按钮:
private void btnAddNewSector_Click(object sender, EventArgs e)
{
// Add new sector to db
m_dataContext.AddNewSector(newSectorName);
// refresh dataview so that comboboxes are updated with the new entry
???
}
我该如何进行刷新?
我希望编辑能让问题更加明确,请指教....
最好的问候
答案 0 :(得分:1)
而不是
???
添加
ItemsGrid.DataSource = new DataView(m_dataContext.ItemsTable);
答案 1 :(得分:0)
您可以使用timer
。它将在一定的时间间隔后完成任务。
查看示例Timer in C#。
你会发现使用它的想法。
我给出一些粗略的草图
private DataTable LoadData()
{
DataTable dt = LoadDatabaseData();
return dt;
}
private void timer1_Tick(object sender, System.EventArgs e)
{
myDataGrid.DataSource = LoadData();
myDataGrid.Databind();
or
your combo box's datasource what ever.
}
注意 - 您正在使用SQLite,除了它是一个数据库之外我不知道。我只向您展示了如何调用将成为网格数据源的函数,并且每1秒后(我的意思是您指定的时间间隔)数据将被刷新。
希望这有帮助。