0

ASPXファイルに次のマークアップ/コードブロックがあります。ddlのバインドは、コードビハインドファイルにあるPage_Loadイベントの後にトリガーされます。この結果、そのようなフローを使用した場合、ドロップダウンリストの選択された値を取得できなくなります。

ただし、何らかの目的で、このように機能する必要があります。ポストバックがトリガーされているとき(ボタンをクリック)に、ドロップダウンリストで選択された値を取得する方法はありますか?

Page URL: page.aspx?para1=0&para2=value

ASPXページ

<% 
    if (Convert.ToInt32(Request.QueryString["para1"]) == 0)
    {
        ddl.DataValueField = "value"; 
        ddl.DataTextField = "text"; 
        ddl.DataSource = ds; //ds is valid, exact code not shown
        ddl.DataBind(); 
    } else {
        //write in this area
        Response.Write("Not 0");
    }
%> 
<form runat="server" id="user_form" class="form-horizontal"> 
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> 
</asp:ToolkitScriptManager> 
<asp:UpdatePanel ID="updPanel" runat="server"> 
    <ContentTemplate> 
        <asp:DropDownList runat="server" ID="ddl"> 
        </asp:DropDownList> 
        <%-- this button will call btnSave_Click to get the ddl's value--%>
        <asp:Button runat="server" ID="btn" Text="Button" OnClick="btn_Click" />
    </ContentTemplate> 
</asp:UpdatePanel> 
</form> 

コードビハインド

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
        //do my stuff 
    } 
} 

protected void btn_Click(object sender, EventArgs e) 
{ 
    int intValue = Convert.ToInt32(ddl.SelectedValue); 
    //do my stuff 
} 

ASPXページコードブロックは、Page_Load /ページのライフサイクルの後に実行され、URLパラメータに基づいて何を行うかを決定します。前もって感謝します!

4

1 に答える 1

1

いつでも非表示のオブジェクトをスローし、jqueryを使用して、ポストバックなしで特定のアクションに基づいて値を非表示の値にコピーし、クライアント側で実行したいように実行できます。

于 2012-06-24T17:16:50.180 に答える