3层下拉式Winforms C#
本文关键字:Winforms 3层 | 更新日期: 2023-09-27 18:00:28
条件下拉
如果您选择T1,T2应该只反映基于T1的值,如果您选择了T2
那么T3应该只反映基于T2 的值
希望有人能帮上忙我想创建一个下拉列表winforms c#3下拉列表,精确到
__________
|__________|<-- selection 1 - T1
__________
|__________|<-- selection 2 - T2
__________
|__________|<-- selection 3 - T3
我的数据看起来像这个
此数据将来自数据源并且看起来像低于
T1 - Application
T2 - Adobe
T3 - Flash
----------------
T1 - Application
T2 - Adobe
T3 - Dreamweaver
---------------
T1 - Application
T2 - Adobe
T3 - Photoshop
---------------
T1 - Application
T2 - Microsoft
T3 - Word
---------------
T1 - Application
T2 - Microsoft
T3 - Excel
因此,对于上面的数据fi,你在T1上选择应用程序,T2应该是Adobe或Microsoft,如果你选择其中一个,它应该只显示与T2 相关的T3
如有任何帮助,我们将不胜感激。
您只在设计时将第一个组合框绑定到T1值。
然后,在该组合框的selectedindexchanged事件上,检索所选项目,并将第二个组合框与基于该值的筛选列表绑定。
您可以对第二个组合框的selectedindexchanged和第三个组合框进行绑定。
仅在第一个组合框中加载数据。
- 在该组合框的
SelectedIndexChanged
事件处理程序上,在第二个组合框中加载数据;清除并禁用第3、第4。。。。组合框 - 同样,在第二个组合框的
SelectedIndexChanged
事件处理程序上,在第三个组合框中加载数据;清除并禁用第4、第5。。。组合框 - 等等
编辑:添加示例代码
以下提供的样本代码仅供参考,绝不符合的任何指南
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.Items.Add("Application");
comboBox1.Items.Add("Adobe");
comboBox1.Items.Add("Flash");
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
comboBox2.Items.Clear();
comboBox3.Items.Clear();
comboBox4.Items.Clear();
comboBox5.Items.Clear();
comboBox3.Enabled = comboBox4.Enabled = comboBox5.Enabled = false;
if (comboBox1.Text != "Application")
comboBox2.Items.Add("Application");
if (comboBox1.Text != "Adobe")
comboBox2.Items.Add("Adobe");
comboBox2.Items.Add("Dreamweaver");
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
comboBox3.Items.Clear();
comboBox4.Items.Clear();
comboBox5.Items.Clear();
comboBox4.Enabled = comboBox5.Enabled = false;
comboBox3.Enabled = true;
if (comboBox2.Text != "Application")
comboBox3.Items.Add("Application");
if (comboBox2.Text != "Adobe")
comboBox3.Items.Add("Adobe");
comboBox2.Items.Add("Photoshop");
}
为前两个下拉菜单设置
Autopostback=true。并处理其SelectedIndexChanged事件。在页面加载事件中,按以下方式绑定第一个下拉列表。
dd1.Items.Add(新ListItem("应用程序","0"));dd1.Items.Add(新ListItem("abc","1"));
然后在dd1_SelectedIndexChanged事件上使用以下代码
protected void dd1_SelectedIndexChanged(对象发送方,EventArgs e){如果ddl.selectedindex=0,则{dd2.Items.Add(新ListItem("Adobe","0"));dd2.Items.Add(新ListItem("Microsoft","1");}}
等等。。
这完全取决于这个获胜表格的用途。但在任何情况下,数据绑定都将加载到仅T1下拉列表。
在web中,您可以使用OnChange事件并调用JavaScript函数,使用AJAX/jQuery填充T2框,或者只提交表单以用新值重新填充T2(有点难,也有点慢,但会得到相同的结果)T3框也是如此,当T2更改时将填充该框。我不会使用Postback,因为每次更改都会提交表单,然后您可能会丢失其他字段的数据,或者您必须验证数据是否正确地重新填充了所有其他字段。
在windows应用程序上,你必须使用下拉事件来做基本上相同的事情,但在C#编码中。