【问题标题】:Filter combobox5 items depending on combobox4 selection根据 combobox4 选择过滤 combobox5 项目
【发布时间】:2018-04-05 18:25:10
【问题描述】:

我想根据之前的组合框选择过滤我的组合框 例如, combobox4 包含 - 鞋子、手表、电视。 combobox5 将包含 - rockport, addidas //shoe selection- tagheuer,劳力士//手表选择- 索尼、三星 // 电视选择。

如果我要在 combo4 中选择电视,我希望 combo5 过滤到仅电视选择

如果我使用了错误的术语,请提前道歉,我只是从 C# 开始

编辑 目前已经使用组合框属性上的实际表单设计设置了值 - 项目。 如果需要,我可以更改它并对其进行硬编码 没有使用任何 sql。

【问题讨论】:

  • 我们需要的信息比提供的多得多。发布一些你已经完成的工作。您是否通过 SQL 绑定第一个组合框?还是硬编码?这是在 ASP.NET 还是 Windows 窗体中? WPF?请编辑更多细节和代码。
  • 看看AJAX,网上有很多这样的。
  • 嗨@AthanasiosKaragiannis,它目前没有硬编码,只是使用win表单设计添加的。我正在使用它的 Windows 窗体。
  • 嗨,@Andyheron,您可以寻找“cascade combobox c# or cascade select html”,您使用的是 c# mvc 还是 c# asp.net?在 mvc 中,您可以使用 ajax 响应来实现,在 asp.net 中,您可以使用 AutoPostBack="true" 来实现,告诉我,我会尝试为它创建一个示例

标签: c# filter combobox


【解决方案1】:

对于我的解决方案,我决定使用代码而不是通过设计器绑定您的组合框。我认为这是最好的,因为以后可以轻松编辑。

protected void bindMainComboBox()
{
    comboBox1.Items.Clear();
    comboBox1.Items.Add("Shoes");
    comboBox1.Items.Add("Watches");
    comboBox1.Items.Add("Tvs");
}

您需要在表单加载时调用它。

public Form1()
{
    InitializeComponent();
    bindMainComboBox();
}

您将希望在您的第一个组合框上分配一个索引更改事件处理程序。万一你不知道该怎么做。右键单击组合框,单击属性。现在在您的属性窗口中,您要单击黄色的电动螺栓thingy(“事件”)。向下滚动直到找到 SelectedIndexChanged 并双击它右侧的空白字段。这将在您的代码中创建一个新部分来处理该事件。

这是我的样子。我存储第一个组合框的文本并将其传递给一个新方法,该方法将类似于第一个组合框的方式绑定它。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    string selectedValue = comboBox1.Text;
    bindSecondComboBox(selectedValue);
}

这就是方法。简单的 if & else if 来处理不同的选择并相应地绑定第二个组合框。

protected void bindSecondComboBox(string selValue)
{
    comboBox2.Items.Clear();
    if (selValue == "Shoes")
    {
        comboBox2.Items.Add("Rockport");
        comboBox2.Items.Add("Addidas");
        comboBox2.Items.Add("Nike");
    }
    else if (selValue == "Watches")
    {
        comboBox2.Items.Add("Tagheuer");
        comboBox2.Items.Add("Rolex");
        comboBox2.Items.Add("Victus");
    }
    else if (selValue == "Tvs")
    {
        comboBox2.Items.Add("Sony");
        comboBox2.Items.Add("Samsung");
        comboBox2.Items.Add("Toshiba");
    }
}

这是非常基本的代码,但有很多方法可以做到这一点。使用这种方法可以很容易地在以后对其进行编辑,使其变得更加复杂和强大。

由于 ComboBox 接收对象,因此您可以在其中存储您想要的任何内容,我将查看 here 以了解他们如何创建新的 Items 类来处理文本/值对。您可以将其与数据表、SQL、数组、列表或任何您可以用来加载数据的东西配对,而无需像我的示例那样对其进行硬编码。

【讨论】:

  • 这正是我所追求的。我还没有准备好探索 SQL 方面,所以这非常适合帮助我前进。
  • @Andyheron 很高兴它有帮助,请确保将答案标记为“答案”,这样问题才会显示为已完成,而不是悬而未决,因此其他人可以找到解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 2020-10-09
  • 2017-12-26
  • 1970-01-01
  • 2018-02-24
相关资源
最近更新 更多