我一直在研究这个问题,它的工作原理。但是,在尝试从控制下拉列表中更改我的选项以查看应显示我的动态列表的下拉列表中的其他列表后,没有任何反应。它仍然显示以前的列表。我能得到一些帮助,这?:通过LINQ基于从另一个下拉列表中选择的内容填充下拉列表
这里是我的正面:
<label for="ddlGift1">Gift #1</label>
<asp:DropDownList runat="server" ID="ddlGift1" class="gift" AutoPostBack="true" AppendDataBoundItems="True" ClientIDMode="Static" OnSelectedIndexChanged="ddlGift1_SelectedIndexChanged">
<asp:ListItem Value="--" Text="Please Select" />
</asp:DropDownList>
<label for="ddlFName1">Fund Name</label>
<asp:DropDownList runat="server" ID="ddlFName1" AutoPostBack="true" AppendDataBoundItems="True" ClientIDMode="Static" >
<asp:ListItem Value="--" Text="Please Select" />
</asp:DropDownList>
<label for="ddlGift2">Gift #2</label>
<asp:DropDownList runat="server" ID="ddlGift2" class="gift" AutoPostBack="true" AppendDataBoundItems="True" ClientIDMode="Static" OnSelectedIndexChanged="ddlGift2_SelectedIndexChanged" >
<asp:ListItem Value="--" Text="Please Select" />
</asp:DropDownList>
<label for="ddlFName2">Fund Name</label>
<asp:DropDownList runat="server" ID="ddlFName2" AutoPostBack="true" AppendDataBoundItems="True" ClientIDMode="Static" >
<label for="txtPAmount2">Pledge Amount</label>
<asp:TextBox runat="server" ID="txtPAmount2" CssClass="narrow" text="0.00" onClick="ComputeCosts();" ClientIDMode="Static" class="PAmount" />
<label for="ddlGift3">Gift #3</label>
<asp:DropDownList runat="server" ID="ddlGift3" class="gift" AutoPostBack="true" AppendDataBoundItems="True" ClientIDMode="Static" OnSelectedIndexChanged="ddlGift3_SelectedIndexChanged">
<asp:ListItem Value="--" Text="Please Select" />
</asp:DropDownList>
<label for="ddlFName3">Fund Name</label>
<asp:DropDownList runat="server" ID="ddlFName3" AutoPostBack="true" AppendDataBoundItems="True" ClientIDMode="Static" >
<asp:ListItem Value="--" Text="Please Select" />
</asp:DropDownList>
背面: 例一个功能:
private void SetCOB(DropDownList name)
{
var _db = (from a in _foundation.COB
orderby a.id
select new { a.id, a.name });
name.DataSource = _db;
name.DataTextField = "name";
name.DataValueField = "id";
name.DataBind();
}
protected void ddlGift1_SelectedIndexChanged(object sender, EventArgs e)
{
if(ddlGift1.SelectedValue == "41")
{
SetCOB(ddlFName1);
}
else if (ddlGift1.SelectedValue == "42")
{
SetCOLA(ddlFName1);
}
else if (ddlGift1.SelectedValue == "43")
{
SetCONHP(ddlFName1);
}
else if (ddlGift1.SelectedValue == "44")
{
SetOE(ddlFName1);
}
else if (ddlGift1.SelectedValue == "45")
{
SetCSEE(ddlFName1);
}
else if (ddlGift1.SelectedValue == "52")
{
SetA(ddlFName1);
}
else if (ddlGift1.SelectedValue == "54")
{
SetS(ddlFName1);
}
}
protected void ddlGift2_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlGift2.SelectedValue == "41")
{
SetCOB(ddlFName2);
}
else if (ddlGift2.SelectedValue == "42")
{
SetCOLA(ddlFName2);
}
else if (ddlGift2.SelectedValue == "43")
{
SetCONHP(ddlFName2);
}
else if (ddlGift2.SelectedValue == "44")
{
SetOE(ddlFName2);
}
else if (ddlGift2.SelectedValue == "45")
{
SetCSEE(ddlFName2);
}
else if (ddlGift2.SelectedValue == "52")
{
SetA(ddlFName2);
}
else if (ddlGift2.SelectedValue == "54")
{
SetS(ddlFName2);
}
}
protected void ddlGift3_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlGift3.SelectedValue == "41")
{
SetCOB(ddlFName3);
}
else if (ddlGift3.SelectedValue == "42")
{
SetCOLA(ddlFName3);
}
else if (ddlGift3.SelectedValue == "43")
{
SetCONHP(ddlFName3);
}
else if (ddlGift3.SelectedValue == "44")
{
SetOE(ddlFName3);
}
else if (ddlGift3.SelectedValue == "45")
{
SetCSEE(ddlFName3);
}
else if (ddlGift3.SelectedValue == "52")
{
SetA(ddlFName3);
}
else if (ddlGift3.SelectedValue == "54")
{
SetS(ddlFName3);
}
}
礼品的名单是从COB不同。它几乎是基于礼物中选择的项目的子列表。所以在这种情况下,将41传给COB不会有太大的好处,因为41中的礼物并不涉及到COB – Paradigm 2013-03-26 18:36:56
中的内容。我不熟悉您的代码。基本上,一旦您选择了一个下拉列表,将该选定值传递给下一个下拉列表的数据源,该数据源将根据所选值进行查询。我在代码中看不到 - 这就是为什么你总是看到它仍然显示前面的列表。 '。 – Win 2013-03-26 18:42:40
但所有的下拉列表都不同。作为主要下拉列表的礼物是唯一一个物品ID为41的基金下拉列表是我想更改的礼物 – Paradigm 2013-03-26 19:01:43