簡體   English   中英

將項目添加到DataBound下拉列表

[英]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以來已經有一段時間了,但是我感覺到您的DropDownListPage_Load之后將重新綁定,它將替換您以前的綁定。

我敢打賭這是頁面生命周期問題。 對於MSDN, 設置了DataSourceID屬性的每個數據綁定控件都將調用其DataBind方法

我認為這些值兩次綁定到下拉列表。 首先,當您在Page_Load中手動綁定並附加額外項時,然后將數據源綁定到Page_PreRender事件中。 嘗試將您的Page_Load代碼帶入Page_PreRender。 希望訂單有所幫助。

我建議使用DropDownList控件的OnDataBound事件,並將代碼放在后面。 這樣,您就可以將DataSourceID與后面的代碼結合起來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM