[英]Using ADO.Net DataSet and TableAdapter for populating combox with filter
我有一个带有数据集和 tableadapter 的 windows 窗体。
Table1 [id, action, info]
Table2 [id, actionId, command]
private void cbActions_SelectedIndexChanged(object sender, EventArgs e)
{
this.optionsTableAdapter.Fill(this.actionsDS.Options);
BindingSource source1 = new BindingSource();
source1.DataSource = actionsDS;
source1.Filter = "ActionId = " + cbActions.SelectedValue;
cbOptions.DataSource = source1;
}
我不知道如何根据第一个组合框 (cbActions) 过滤第二个组合框 (cbOptions)。
在 sql 中,我将使用“SELECT options where actionid = 5”但是,为简单起见,我尝试使用内置的 ado.net 数据集和数据表。
它必须很容易,我必须接近。
昨天想了好几个小时。
int actionId = 5;
ActionsDS.OptionsDataTable optionsDt = optionsTableAdapter.GetByActionId(actionId);
cbOptions.DataSource = optionsDt;
使用数据关系可能更简单 - 您的 CarDataSet 中有 3 个表 - 制造商、型号、修剪。 它们之间都有 DataRelations,假设它们被命名为 ManufacuterModel 和 ModelTrim
您打开数据源窗口(查看菜单-其他窗口)并展开每个节点。 你会看到你有制造商、模型和修剪的顶级节点,但在制造商下你有模型,在它下面你有修剪(和根模型下的另一个修剪)
将Manufacturer拖到窗体上创建一个DataGridView,将Manufacturer的子级Model拖到窗体上,拖拽Model的子级Trim
您现在应该有 3 个绑定源,但关键是:
运行应用程序; 在制造商网格中选择父行将模型网格过滤为来自该制造商的汽车,并且修剪细化为仅研磨第一个模型。 选择一个模型和修剪改变等
停止程序(只是为了演示它的工作)并将组合框绑定到那些绑定源,删除网格(除非您使用组合来驱动网格,在这种情况下,网格可能更适合您的 UI
不要忘记,这只有在数据表充满数据(相关的)时才有效——如果你有成千上万的制造商、型号和装饰,那将是一个大数据集(选择性加载会更好,但它更多复杂的)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.