0

この問題は解決しました。投稿の下の私のコメントを参照してください

コードに困惑している問題があります。データベースクエリに静的にデータバインドされたASP.NET DropDownList(単純で、グリッドビューなどではありません...)があります。さらに、マークアップに 1 つのリスト項目を追加します。

<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 には、リスト内の特定の項目の値が含まれます。削除を解決してリスト内の項目を値で選択しようとすると、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' という名前は現在のコンテキストに存在しません

(このメッセージはドイツ語から翻訳されたもので、英語では若干異なる場合があります)

どんな助けでも感謝します。

4

1 に答える 1

0

ドロップダウンリストの 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;
    }
}
于 2016-03-30T09:12:44.137 に答える