0

更新パネルで selectedIndexChanged を使用して、asp.Net の DropDownList から選択した値を取得するにはどうすればよいですか? 試してみましたが、DropDownList に AutoPostBack を追加すると、リソースが見つからないというエラー ページが表示されます (「selected_IndexChanged」にもヒットしません)。

ここに私のドロップダウンリストがあります:

<asp:ScriptManager ID="ScriptManager1" runat="server" />
    <asp:UpdatePanel runat="server" ID="UpdatePanel1">
        <ContentTemplate>
            <asp:DropDownList runat="server" ID="ddlCaseFilesNew" DataSourceID="dsCaseFiles"
                DataTextField="Display" DataValueField="FileID" OnPreRender="ddl_PreRender" Width="300px"
                AutoPostBack="true" OnSelectedIndexChanged="ddlCaseFilesNew_SelectedIndexChanged" Visible="False">
                <asp:ListItem>Item 1</asp:ListItem>
            </asp:DropDownList>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="ddlCaseFilesNew" EventName="SelectedIndexChanged" />
        </Triggers>
    </asp:UpdatePanel>

DropDownList 内の値をクリックすると、「リソースが見つかりません」というページが表示されます。理由がわかりません。私の「onSelectedIndexChanged」にも触れません

  <script runat="server">
    protected void ddlCaseFilesNew_SelectedIndexChanged(object sender, EventArgs e)
    {
        hidNewCaseFile.Value = ddlCaseFilesNew.SelectedItem.Value;
    }
</script>
4

2 に答える 2

2

SelectedIndex 関数で、次を使用します。

string sValue = ((DropDownList)sender).SelectedValue;

これは更新パネルにあるため、デザイナー (this.DdlId) を介してアクセスできない可能性があります。

OPのコメントに基づいて、これはおそらく必要なものです:

protected void ddlCaseFilesNew_SelectedIndexChanged(object sender, EventArgs e)
{
    hidNewCaseFile.Value = ((DropDownList)sender).SelectedValue;
}

非表示フィールドを ContentTemplate に移動する必要もあります。

于 2012-10-01T19:34:09.513 に答える
1

使用する:

protected void myDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
    var res = this.myDropDownList.SelectedValue;
}

または:

protected void myDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
    var ddl = sender as DropDownList;
    var res = ddl.SelectedValue;
}

編集 1

内のすべてのコントロールUpdatePanelに対して部分ページ レンダリングが発生することを理解する必要があります。この場合、内にないように見えるコントロールのValueプロパティを設定しようとしているため、その値は決して更新されません。hidNewCaseFileUpdatePanel

于 2012-10-01T19:30:44.003 に答える