【发布时间】:2017-06-01 18:10:44
【问题描述】:
我有一个如下的数据集设置:
可以看出,两个表之间存在关系。
在我的表单页面中,我有以下布局:
组合框只需选择“平台”,我想要得到的是列表框只显示属于关系的记录,由 plataforma_id 过滤。
在“SetupUrlConditions”表的 TableAdaptor 中,我将其设置如下:
当我运行应用程序时,ListBox 始终显示所有记录,而不是按关系过滤。改变ComboBox选中项,结果总是一样的。
那么,我的代码中是否缺少一些东西来完成这个?
谢谢。
编辑:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Backoffice
{
public partial class SetupRules : Form
{
public SetupRules()
{
InitializeComponent();
}
private void plataformasBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.plataformasBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.plataformasDataSet);
}
private void SetupRules_Load(object sender, EventArgs e)
{
this.plataformasTableAdapter.Fill(this.plataformasDataSet.plataformas);
this.setupUrlConditionsTableAdapter.Fill(this.plataformasDataSet.SetupUrlConditions);
}
}
}
【问题讨论】:
-
仅仅因为数据库配置了关系并不意味着它会在前端以实物形式响应。您需要为组合框引发 changed 事件以强制更新列表框中的结果数据集内容。然后,该更改将重新填充您的前端。由于下面的答案要求您提供更多表单代码,因此可以更好地帮助我们帮助您。
-
现在填充两个控件。当组合框没有选择时,不要填充列表框。
SelectedIndexChange或SelectedValueChanged事件可用于根据所选值填充列表框。 -
嗨@mvermef,我刚刚做了你所说的。我已经移动了这条线: this.setupUrlConditionsTableAdapter.Fill(this.plataformasDataSet.SetupUrlConditions);在组合框中更改事件并始终返回所有记录。
-
不要将 TableAdapters 留在他们参考我的答案的地方。请注意,这就像 2001 年的技术......我不得不有点挠头,因为自从 WPF 出现以来我还没有真正使用过 Forms。
标签: c# visual-studio combobox listbox