【问题标题】:Update Panel is not working over there "OnSelectedIndexChanged" Event which is inside a repeater更新面板在中继器内的“OnSelectedIndexChanged”事件不起作用
【发布时间】:2013-09-05 10:52:41
【问题描述】:

我在一个页面中放置了一个更新面板并且它工作正常。在那个页面中我是 加载中继器并且它也可以正常工作。但是在该中继器内部,我在下拉列表中触发了一个事件 "OnSelectedIndexChanged" 。使用它时,页面正在刷新。似乎更新面板在那里不起作用。

<asp:UpdatePanel ID="update_invest" runat="server" UpdateMode="Always">
  <ContentTemplate>
 <asp:Repeater ID="rptinvest" runat="server" OnItemDataBound="rptactions_ItemDataBound">
   <ItemTemplate>
     <td>
    <asp:DropDownList ID="ddlemployee" runat="server" OnSelectedIndexChanged="ddlEmployee_SelectedIndexChanged"
   AppendDataBoundItems="true" AutoPostBack="True">
   </asp:DropDownList>
   </td>
   </ItemTemplate>
  </asp:Repeater>

以上是代码……!!

谢谢阿尔沙德..!

【问题讨论】:

  • 我假设您在复制粘贴时错过了内容模板的结束标记?
  • 你能在后面展示你的代码吗?

标签: asp.net sql-server-2008 updatepanel repeater asprepeater


【解决方案1】:

我认为您需要在更新面板中注册回发触发控件。在您的代码 sn-p 中,它是 ddlemployee。如果它在标记中,您可以这样做:

<Triggers>
 <asp:AsyncPostBackTrigger ControlID="ddlemployee" EventName="OnSelectedIndexChanged" />
 </Triggers>
</asp:UpdatePanel>

但是,下拉控件嵌套在中继器中,您必须从后面的代码中注册它,例如:

For Each item As RepeaterItem In rptinvest.Items

 Dim ddlemployee As DropDownList = DirectCast(item.FindControl("ddlemployee"), DropDownList)
 ScriptManager1.RegisterAsyncPostBackControl(ddlemployee)

Next

希望对您有所帮助。有关更新面板和触发器的更多信息,请访问 here

【讨论】:

  • 我不是提问者,但你已经完美地帮助了我。有一个我的补充,RegisterAsyncPostBackControl语句必须在所有可以刷新更新面板的地方添加,否则如果更新面板刷新,注册将无效。我猜是因为触发器绑定在javascript端,更新面板刷新将从new开始所有的javascript绑定。
  • 另一个有趣的线索是,如果 X-UA-Compatible 设置为 IE=8,则无需注册任何内容,更新面板中的下拉列表将由下拉列表子项自动刷新部分.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-04
相关资源
最近更新 更多