我对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}}
答案 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