2

次のコードがあります。

私が欲しいのは、ddlProvince ドロップダウンが変更され、イベント SelectedIndexChanged がスローされるときですが、そのメソッドにはアクセスされません。

<asp:UpdatePanel ID="pnlCountries" runat="server">
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="ddlProvince" EventName="SelectedIndexChanged" />
</Triggers>
<ContentTemplate>
<tr>
    <td><asp:Literal ID="Literal37" Text="<%$Resources:glossary,country %>" runat="server"/></td>
    <td>

<asp:DropDownList ID="ddlCountries" CssClass="textbox" runat="server">
</asp:DropDownList>
<br />
<cc1:cascadingdropdown ID="cddCountries" runat="server" Category="Country" Enabled="True" LoadingText="<%$Resources:Glossary,loading %>" PromptText="<%$Resources:Glossary,country_choose %>" 
ServiceMethod="GetCountries" TargetControlID="ddlCountries">
</cc1:cascadingdropdown>
<asp:RequiredFieldValidator CssClass="errortext" Text="<%$Resources:Glossary,required %>" SetFocusOnError="true" ID="rfvcboScenario" runat="server" InitialValue="" ControlToValidate="ddlCountries" Display="Dynamic" />


    </td>
</tr>
<tr>
    <td><strong><asp:Literal ID="Literal9" Text="<%$Resources:Glossary,province %>" runat="server" /> *</strong></td>
    <td>
        <asp:DropDownList ID="ddlProvince" CssClass="textbox" runat="server">
        </asp:DropDownList>       
        <asp:RequiredFieldValidator CssClass="errortext" Text="<%$Resources:Glossary,required %>" SetFocusOnError="true" ID="RequiredFieldValidator1" runat="server" InitialValue="" ControlToValidate="ddlProvince" Display="Dynamic" />
    <cc1:CascadingDropDown ID="cddProvince" runat="server" TargetControlID="ddlProvince" ParentControlID="ddlCountries"   
        Category="Province" LoadingText="<%$Resources:Glossary,loading %>" prompttext="<%$Resources:Glossary,province_select %>" ServiceMethod="GetProvincesForCountry" >
    </cc1:CascadingDropDown>


</td>
</tr>
</ContentTemplate>
</asp:UpdatePanel>

現在、このコードラインは決してヒットしません:

Protected Sub ddlProvince_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlProvince.SelectedIndexChanged
    ReportError("ddlProvince_SelectedIndexChanged", "")
End Sub

更新: 以前は ddlProvince コントロールに Autopostback="true" 属性がありましたが、それが原因で完全なポストバックが発生しました (ここでも説明されている問題:ドロップダウン リスト (更新パネル内) が完全な PostBack を引き起こす! )

私は何が欠けていますか?

4

2 に答える 2

2

編集:ドロップダウンリスト を設定する必要がありますAutoPostBack="true"。これを変える:

<asp:DropDownList ID="ddlProvince" CssClass="textbox" runat="server">
        </asp:DropDownList>

これに:

<asp:DropDownList ID="ddlProvince" CssClass="textbox" runat="server" AutoPostBack="true" >
        </asp:DropDownList>  
于 2013-09-04T17:29:19.763 に答える
1

OnSelectedIndexChanged上記のようにマークアップでイベントを設定していない可能性があります。

設定する必要がある 3 つのプロパティ: OnSelectedIndexChangedAutoPostback&EnableViewState

<asp:DropDownList ID="ddlProvince" runat="server" 
     AutoPostBack="true" EnableViewState="true"
     OnSelectedIndexChanged="ddlProvince_SelectedIndexChanged">                
</asp:DropDownList>

page_Loadイベントでドロップダウンリストをバインドしている場合は、!IsPostback条件チェック内に配置します。

protected void page_Load ( object sender, EventArgs e )
{
     if(!IsPostBack)
     {
            //DropDownList data bind and all...
      }
}
于 2013-09-05T02:08:57.330 に答える