[英]Adding Item to DataBound Drop Down List
是的,我已經在這里閱讀了大多數主題,但是找不到有效的答案。
我有三個下拉列表。 首先是數據綁定,以獲取不同的實驗名稱。 用戶選擇,頁面回發,第二個下拉菜單顯示不同的時間點。 這是我需要幫助的地方。 我需要向該下拉列表添加一個項目,其ID,DataTextField,DataValueField均為TimePt。
看起來很簡單,但我無法正常工作。
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
TimePt.DataSource = TimePTDD;
TimePt.DataValueField = "TimePt";
TimePt.DataTextField = "TimePt";
TimePt.DataBind();
TimePt.Items.Insert(0, new ListItem("--Select---", "0"));
TimePt.SelectedIndex = 0;
}
}
我錯過了一些東西。
在下拉列表中設置AppendDataBoundItems="true"
,它應該可以正常工作。
這是一個類似的問題: 如何將Item添加到SqlDataSource數據綁定列表
另一個關於使用此方法的潛在重復項及其解決方法: Dropdownlist AppendDataboundItems(第一個項目為空白)
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
TimePt.DataValueField = "TimePt";
TimePt.DataTextField = "TimePt";
var times = TimePTDD.ToList();
times.Insert(0, new {TimePt="0",TimePt="--Select--"});
TimePt.DataSource = times;
TimePt.DataBind();
//TimePt.SelectedIndex = 0;
}
}
<asp:DropDownList ID="ExpAnalysisName" runat="server"
DataSourceID="DropDownEXP" DataTextField="ExpAnalysisName"
DataValueField="ExpAnalysisName" AppendDataBoundItems="true" AutoPostBack=true>
<asp:ListItem Selected="True" Value="0">Select an Experiment</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="DropDownEXP" runat="server"
ConnectionString="<%$ ConnectionStrings:SGMD3_DataBase %>" SelectCommand="SELECT DISTINCT ExpAnalysisName FROM VW_Data">
</asp:SqlDataSource>
<asp:DropDownList ID="TimePt" runat="server" AutoPostBack="True" DataSourceID="TimePTDD" DataTextField="TimePt"
DataValueField="TimePt">
</asp:DropDownList>
<asp:SqlDataSource ID="TimePTDD" runat="server"
ConnectionString="<%$ ConnectionStrings:SGMD3_DataBase %>" SelectCommand="SELECT DISTINCT TimePt
FROM VW_Data
WHERE ExpAnalysisName = @ExpAnalysisName">
<SelectParameters>
<asp:FormParameter FormField="ExpAnalysisName" Name="ExpAnalysisName" />
</SelectParameters>
</asp:SqlDataSource>
So you can have a reference.
我看到您正在以兩種不同的方式指定DataSource
標記中的DataSourceID
以及在后面的代碼中手動設置DataSource
。 嘗試從標記中刪除DataSourceID
,看看是否有幫助。
自從我過多使用ASP.NET以來已經有一段時間了,但是我感覺到您的DropDownList
在Page_Load
之后將重新綁定,它將替換您以前的綁定。
我敢打賭這是頁面生命周期問題。 對於MSDN, 設置了DataSourceID屬性的每個數據綁定控件都將調用其DataBind方法 。
我認為這些值兩次綁定到下拉列表。 首先,當您在Page_Load中手動綁定並附加額外項時,然后將數據源綁定到Page_PreRender事件中。 嘗試將您的Page_Load代碼帶入Page_PreRender。 希望訂單有所幫助。
我建議使用DropDownList
控件的OnDataBound
事件,並將代碼放在后面。 這樣,您就可以將DataSourceID
與后面的代碼結合起來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.