2012-09-11 80 views
0

林不知道这里发生了什么。但是我在我的页面上有一个更新面板,在State dropdown selecteditem事件中填充城市下拉菜单。 这是工作,出于某种原因,现在不是。它甚至不会弹出我作为事件中第一行代码放置的消息框。更新面板已无法工作

这是标记;

<!-- State dropdown selector area --> 
     <asp:DropDownList ID="ddlState" runat="server" 
          AppendDataBoundItems="True" CssClass="dropdowns" 
          BorderColor="Black" 
          BorderStyle="Solid" BorderWidth="2px" TabIndex="7" 
          DataSourceID="EntityDataSource1" DataTextField="Name" 
          DataValueField="Id" ToolTip="Select a state here" AutoPostBack="True"> 
      <asp:ListItem Value="" Text="Select a state"/> 
     </asp:DropDownList> 
     <asp:EntityDataSource ID="EntityDataSource1" runat="server" ConnectionString="name=enerteckEntities" 
      DefaultContainerName="enerteckEntities" EnableFlattening="False" EntitySetName="states" 
      Select="it.[Name], it.[Id]"> 
     </asp:EntityDataSource> 
     <asp:RequiredFieldValidator ID="rfvState" runat="server" 
            ErrorMessage="Please select a state from the dropdown list" 
            Display="Dynamic" ControlToValidate="ddlState" 
            ForeColor="#FF3300"> 
     </asp:RequiredFieldValidator> 
     <!-- End of State dropdown selector area --> 
    <br /><br /> 
    <asp:UpdatePanel ID="updtPanelCity" runat="server"> 
     <ContentTemplate> 
      <asp:DropDownList ID="ddlCity" runat="server" 
           AppendDataBoundItems="True" CssClass="dropdowns" 
           BorderColor="Black" 
           BorderStyle="Solid" BorderWidth="2px" TabIndex="8" 
           ToolTip="Select a city here" AutoPostBack="True"> 
       <asp:ListItem Value="" Text="Select a city"/> 
      </asp:DropDownList> 
      <asp:RequiredFieldValidator ID="rfvCity" runat="server" 
             ErrorMessage="Please select a city from the dropdown list" 
             Display="Dynamic" ControlToValidate="ddlCity" 
             ForeColor="#FF3300"> 
      </asp:RequiredFieldValidator> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="ddlState" EventName="SelectedIndexChanged" /> 
     </Triggers> 
    </asp:UpdatePanel> 

这是后面的代码;

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 

End Sub 

Protected Sub ddlState_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlState.SelectedIndexChanged 
    MsgBox("are you actually working") 
    If IsPostBack Then 
     ddlCity.Items.Clear() 
     Dim context As New enerteckEntities() 

     'Dim query = context.DistinctCityFromZiptax(Convert.ToInt16(ddlState.SelectedValue)) 
     Dim query = From c In context.ziptaxes Where c.StateID = ddlState.SelectedValue Order By c.City Select c.City, c.ZipTaxId 
     ddlCity.DataSource = query.Distinct().ToList() 
     ddlCity.DataValueField = "ziptaxid" 
     ddlCity.DataTextField = "City" 
     ddlCity.DataBind() 
    End If 

End Sub 

我需要另一组眼睛来解决这个问题。

编辑: 这里是什么在ScriptManager的

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    <Scripts> 
     <%--Framework scripts--%> 
     <asp:ScriptReference Name="MsAjaxBundle" /> 
     <asp:ScriptReference Name="jquery" /> 
     <asp:ScriptReference Name="jquery.ui.combined" /> 
     <asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" /> 
     <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" /> 
     <asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" /> 
     <asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" /> 
     <asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" /> 
     <asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" /> 
     <asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" /> 
     <asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" /> 
     <asp:ScriptReference Name="WebFormsBundle" /> 
     <%--Site scripts--%> 

    </Scripts> 
</asp:ScriptManager> 

回答

0

1您可以在您的UpdatePanel添加UpdateMode财产。并设置条件

<asp:UpdatePanel ID="updtPanelCity" 
           UpdateMode="Conditional" 
           runat="server"> 

.... 

2,将你的DDL在更新面板

<ContentTemplate> 
     .... 
    <asp:DropDownList ID="ddlState" runat="server" 
          AppendDataBoundItems="True" CssClass="dropdowns" 
          BorderColor="Black" 
          BorderStyle="Solid" BorderWidth="2px" TabIndex="7" 
          DataSourceID="EntityDataSource1" DataTextField="Name" 
          DataValueField="Id" ToolTip="Select a state here" AutoPostBack="True"> 
      <asp:ListItem Value="" Text="Select a state"/> 
     </asp:DropDownList> 
</ContentTemplate> 

3并在您dllState添加OnSelectedIndexChanged=""

+0

有在母版页的脚本经理,因此其在这个页面的标头 – dinotom

+0

那个改变,给updatepanel有条件没有做任何事 – dinotom

+0

在同一个更新面板中?你应该能够从更新面板之外的控件调用更新面板刷新不是吗? – dinotom