簡體   English   中英

ASP.NET DropDownList.SelectedValue丟失i!nPostBack

[英]ASP.NET DropDownList.SelectedValue gets lost i!nPostBack

此問題已解決,請參閱帖子下方的我的評論

我的代碼令人困惑,我遇到了一個問題:我有一個ASP.NET DropDownList(簡單,不在gridview中,等等),它是靜態地綁定到數據庫查詢的數據。 另外,我在標記中添加了一個列表項:

<asp:DropDownList ID="ddDeviceSelector" runat="server" DataSourceID="CryringDB_InventoryAssets" DataTextField="Identifier" DataValueField="RowID" AutoPostBack="True" OnTextChanged="ddDeviceSelector_IndexChanged" ToolTip="Select a device by name" AppendDataBoundItems="True" Width="300px">
    <asp:ListItem>-- Select Device OR Enter Data of New Device --</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="CryringDB_InventoryAssets" runat="server" connectionString="<%$ ConnectionStrings:CMSValuesExplicitUser %>" SelectCommand="SELECT valueColumn, textColumns FROM myTable"></asp:SqlDataSource>

我可以使用URL查詢參數“?rid = ...”調用頁面,其中rid包含列表中一項特定項目的值。 當我嘗試解決rid並按值在列表中選擇項目時,沒有設置DropDownList.SelectedValue。 Page_Load的代碼:

    protected void Page_Load(object sender, EventArgs e)
    {
        // Code to interpret the parameter rid (RowID) in the URL
        // provides functionality to open formAssetDetails of an individual object.
        if (!IsPostBack)
        {
            ddDeviceSelector.DataBind();
            setUiPropertiesByMode(classConstants.displayMode);

            String rowID = null;
            rowID = Request.QueryString["rid"];

            if (rowID != null)
            {
                setUiPropertiesByMode(classConstants.editMode);
                ddDeviceSelector.Enabled = true;
                ddDeviceSelector.Enabled = true;
                ddDeviceSelector.SelectedValue = rowID;
            }
        }

代碼執行沒有問題,但是我在調​​試器中看到一條錯誤消息(“ ddDeviceSelector.SelectedValue = rowID;”行之后的斷點)

錯誤CS0103:名稱'SelectedValue'在當前上下文中不存在

(此消息是從德語翻譯而來的,可能與英文有所不同)

任何幫助表示贊賞。

嘗試在下拉列表的DataBound事件中設置選定的值,這將確保您的下拉列表與數據完全綁定,然后再嘗試設置選定的值,請記住還要委派此方法:

//In your designer file
ddDeviceSelector.DataBound += new System.EventHandler(ddDeviceSelector_DataBound);

protected void ddDeviceSelector_DataBound(object sender, EventArgs e)
{
    String rowID = null;
    rowID = Request.QueryString["rid"];

    if (rowID != null)
    {
        setUiPropertiesByMode(classConstants.editMode);
        ddDeviceSelector.Enabled = true;
        ddDeviceSelector.Enabled = true;
        ddDeviceSelector.SelectedValue = rowID;
    }
}

暫無
暫無

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

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