DropdownList DataSource c#

时间:2016-06-08 11:21:31

标签: c# asp.net

我对DropDownList有疑问。我可以设法创建2 //OnSelectedIndexChanged="ddl_1_SelectedIndexChanged"> for ddl_2 and //OnSelectedIndexChanged="ddl_2_SelectedIndexChanged"> for ddl_3 protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { var source1 = new List<ListItem>() { new ListItem("Test1"), new ListItem("Test2") }; var source2 = new List<ListItem>() { new ListItem("Test3"), new ListItem("Test4") }; var source3 = new List<ListItem>() { new ListItem("A"), new ListItem("B") }; switch(this.ddl_1.SelectedValue) { case "1": this.ddl_2.DataSource = source1; break; case "2": this.ddl_2.DataSource = source2; break; case "3": this.ddl_2.DataSource = source3; break; } this.ddl_2.DataBind(); } protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e) { var source4 = new List<ListItem>() { new ListItem("C"), new ListItem("D") }; switch (this.ddl_2.SelectedValue) { case "1": this.ddl_3.DataSource = source4; break; } this.ddl_3.DataBind(); } ,其中第二个依赖于您在第一个中做出的选择,但我无法使用多个列表。 我有AutoPostBack为true和

{{1}}

1 个答案:

答案 0 :(得分:0)

让我以source3为例在这里您有两个列表项,但您只指定了Text属性。并在交换机中访问Value属性。

ListItem是一个有两个构造函数的类,一个接受Text,第二个接受Text以及value所以你需要做的是: - 使用第二个构造函数来定义列表项。所以看起来如下:

var source3 = new List<ListItem>()
    {
        new ListItem("A","1"),
        new ListItem("B","2")
    };

因此,我们可以说"1"将是项"A"的值字段,而“2”是项目“B”。

但在您的情况下,您需要识别数据源。没问题,我会建议一个选项。让我重新定义source3,如下所示

var source3 = new List<ListItem>()
    {
        new ListItem("A","3A"),
        new ListItem("B","3B")
    };//Where 3 stands for source3 

如果需要,您需要用if..else..if替换开关,因此条件为:

if(this.ddl_1.SelectedValue.ToString().Contains("3")){
    // assign Source 3 Here
}
else if (this.ddl_1.SelectedValue.ToString().Contains("2"))
{
    // assign Source 2 Here
}
// and so on