我一直在研究這個問題,它的工作原理。但是,在嘗試從控制下拉列表中更改我的選項以查看應顯示我的動態列表的下拉列表中的其他列表後,沒有任何反應。它仍然顯示以前的列表。我能得到一些幫助,這?:通過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