0

リストされているすべての店舗のドロップダウンが必要です。クリックすると選択した値を取得する必要がありますが、ポストバックが発生し、Page.IsPostback をチェックしてもデータがないため常に null になります。

これが私のコードです。

=============================================

ここに私のaspxファイルがあります

<div id="SurveyCompetitionContainer">
    <div class="surveyCompetitionContents">
        <ajax:UpdatePanel ID="WinSurveyAjax" runat="server" UpdateMode="conditional" ChildrenAsTriggers="true"
            RenderMode="block">
            <ContentTemplate>
                <div id="competitionInfo" runat="server" visible="true">
                    <div class="headerTitle">
                        Enter your email for the chance to win a week long holiday in a luxury apartment
                        in the Lake District.
                    </div>
                    <div class="emailBox">
                        <div class="emailDiv">
                            <asp:Label ID="emailLabel" CssClass="emailLabel" Text="Email:" runat="server"></asp:Label>
                            <asp:TextBox ID="emailTextbox" runat="server" CssClass="water" Text="" ClientIDMode="Static"
                                ValidationGroup="EmailGroup"> </asp:TextBox>
                        </div>
                        <div class="storesDiv">
                            <asp:Label ID="LabelStores" CssClass="StoreLabel" Text="Your favourite Mountain Warehouse store:"
                                runat="server"></asp:Label>
                            <asp:DropDownList ID="Stores" CssClass="storesDD" runat="server" ToolTip="Stores"
                                EnableViewState="true" AppendDataBoundItems="True" OnSelectedIndexChanged="Stores_SelectedIndexChanged">
                            </asp:DropDownList>
                        </div>
                    </div>
                    <div class="enterbtn">
                        <asp:Button ID="emailJoinButton" CssClass="emailJoinButton" runat="server" OnClick="emailJoinButton_Click"
                            Text="ENTER" EnableViewState="False" ValidationGroup="EmailGroup" />
                    </div>
                </div>
                <div id="competitionSurvey" runat="server">
                    <div class="SCHeaderInfo">
                        <h2>
                            Thank you! We will notify the lucky winner by email.
                        </h2>
                        <h3>
                            We'd love to send you tailored special offers - just take a few moments to fill
                            out the following optional details.
                        </h3>
                    </div>
                    <div class="SCquestionsDetails">
                        <p>
                            <b>1. What are you interested in?</b><span class="small"> (Select all that apply)</span></p>
                        <asp:CheckBoxList ID="Interests" runat="server" CssClass="interests" Width="400">
                            <asp:ListItem>Camping</asp:ListItem>
                            <asp:ListItem>Hiking</asp:ListItem>
                            <asp:ListItem>Skiing</asp:ListItem>
                            <asp:ListItem>Travel</asp:ListItem>
                            <asp:ListItem>Walking</asp:ListItem>
                            <asp:ListItem>Everything</asp:ListItem>
                            <asp:ListItem>Mens</asp:ListItem>
                            <asp:ListItem>Womens</asp:ListItem>
                            <asp:ListItem>Kids</asp:ListItem>
                        </asp:CheckBoxList>
                    </div>
                </div>
            </ContentTemplate>
        </ajax:UpdatePanel>
    </div>
</div>

================================

これが私のコードです

protected void Page_Load(object sender, EventArgs e)
            {
                        if (!Page.IsPostBack)
                                    BindAllStores();
            }




  protected void emailJoinButton_Click(object sender, EventArgs e)
            {
                        Session["FavStore"] = Stores.SelectedItem.ToString(); --> this is where i am storing the selected value.

                        if (Page.IsValid)
                        {
                                    if (competitionInfo.Visible == true)
                                    {
                                                LoadSurvey();
                                                competitionInfo.Visible = false;
                                                competitionSurvey.Visible = true;
                                    }
                        }
            }


public void  BindAllStores()
            {
                        Stores.AppendDataBoundItems = true;    
                        Stores.Items.Add(new ListItem("--- Choose one of our stroes --- ", "0"));


                        Stores.DataSource = AllStores;
                        Stores.DataTextField = "DisplayName";
                        Stores.DataValueField = "NAME";
                        Stores.DataBind();
            }

私がやっていることは、クリックすると 1 つの div を非表示にし、すべての調査の質問を含む別の div を表示し、送信時にドロップダウンリストを持つ前の div の値を取得する必要があることです。

私はそれが非常に難しいと感じているので、私を助けてください。

皆さんありがとう。

4

2 に答える 2

1

ページとドロップダウンリストを有効にしてviewStateから試してください

ビューステートを使用すると、サーバーコントロールはHTTPリクエスト間でその状態を維持できます。次のすべての条件が満たされると、コントロールのビューステートが有効になります。

  • ページのEnableViewStateプロパティがtrueに設定されています。
  • コントロールのEnableViewStateプロパティがtrueに設定されています。
  • コントロールのViewStateModeプロパティがEnabledに設定されているか、Enabled設定を継承します。

またはpageLoadの代わりにcontrol/page init(IsPostBackフラグをチェックしないでください)にデータをロードします

于 2012-12-03T11:17:25.473 に答える
1

まず、ASPXで指定DropDownListします。AsyncPostBackTrigger

<Triggers>
    <asp:AsyncPostBackTrigger ControlID="dropdownlist" EventName="SelectedIndexChanged" />
</Triggers>

IsInAsyncPostBack次に、代わりに次を使用してみてください。

protected void Page_Load(object sender, EventArgs e) 
{
    if (!ScriptManager.GetCurrent(Page).IsInAsyncPostBack) 
    {
        BindAllStores();
    }
}
于 2012-12-03T11:08:47.863 に答える