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

如有任何帮助,我们将不胜感激。

3层下拉式Winforms C#

您只在设计时将第一个组合框绑定到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#编码中。