asp.net – 从标签容器中的数据绑定gridview丢失更新面板触发器
我在gridview中获取命令链接时遇到了一些麻烦,以保持它在初始回发后更改选项卡的能力.所以下面你会看到我的内容结构(大大简化):
<ajaxToolkit:TabContainer runat="server" ID="tabBody"> <ajaxToolkit:TabPanel runat="server" ID="tabPanel1"> <ContentTemplate> <asp:UpdatePanel runat="server" ID="updPanel1"> <ContentTemplate> <asp:Gridview runat="server" ID="grd1" OnRowCommand="grd1_RowCommand" OnRowDataBound="grd1_RowDataBound"> <asp:TemplateField> <ItemTemplate> <asp:LinkButton ID="lnkChangePanels" runat="server" CommandArgument='<%#Eval("id") %>' CommandName="gotopanel2" Text='<%#Eval("FirstName") & " " & Eval("LastName")%>' /> </ItemTemplate> </asp:TemplateField> </asp:Gridview> </ContentTemplate> </asp:UpdatePanel> </ContentTemplate> </ajaxToolkit:TabPanel> <ajaxToolkit:TabPanel runat="server" ID="tabPanel2"> <ContentTemplate> <asp:UpdatePanel runat="server" ID="updPanel2"> <ContentTemplate> <asp:Gridview runat="server" ID="grd2"> </asp:Gridview> </ContentTemplate> </asp:UpdatePanel> </ContentTemplate> </ajaxToolkit:TabPanel> </ajaxToolkit:TabContainer> 为了填充面板1上的gridview,有一个用户输入的搜索框,我调用一个函数将linq查询绑定到它. 现在我将rowcommand添加为rowdatabound上的回发触发器: Protected Sub grd1_RowDataBound(ByVal sender As Object,ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then Dim lb As LinkButton = CType(e.Row.FindControl("lnkChangePanels"),LinkButton) If Not lb Is Nothing Then ToolkitScriptManager1.RegisterPostBackControl(lb) End If End If End Sub 然后这是我必须触发选项卡面板更改(并做一些其他的东西)的代码: Protected Sub grd1_RowCommand(ByVal sender As Object,ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grd1.RowCommand Dim id = e.CommandArgument.ToString() Select Case e.CommandName Case "gotopanel2" eventDetails(id,"C") tabBody.ActiveTab = tabPanel2 End Select End Sub 这会导致正确的回发并更改选项卡,一切都按预期工作.但是如果我回到第一个标签并尝试点击gridview 1中的另一行,则没有任何反应. 有没有办法构建这个,以便选项卡可以更改而不会丢失回发触发器或我是否会发生这种错误? 谢谢. 解决方法
回发触发器不会丢失.问题是由每个选项卡中的各个UpdatePanel引起的.
将整个TabContainer放在UpdatePanel中,您可以从选项卡中删除UpdatePanel(但您不必这样做).确保该新面板的UpdateMode设置为“始终”. 我认为在你的例子中它没有改变的原因是UpdatePanel只刷新它自己的内容和属性,决定是否可见tab是否为在UpdatePanel之外的div(tabPanel)设置.当您返回带有网格的选项卡时,您可以通过单击它来实现客户端,并且当它出错时. 要了解问题的根源并找出它在第一次回发期间的工作原理,您可能需要调试用于TabContainer控件的ajax工具包javascript. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – How2:在HttpModule中挂钩的事件,用于将js链接放
- 使用ASP.net刷新/重新加载副作用?
- asp.net-mvc-3 – 在MVC应用程序中将配置设置注入Javascrip
- asp.net – 在会话中存储值是否安全?
- asp.net – 将ControlParameter添加到SqlDataSource可以防止
- asp.net-mvc – 如何在大型asp.net mvc项目中管理路由
- ASP.NET MVC – 开始的原因
- asp.net开源流程引擎API开发调用接口大全-工作流引擎设计
- asp.net-mvc – 单元测试适配器抛出异常:无法在ASP.NET MV
- 如何在asp.net按钮回发之前运行javascript函数
- 子类中的ASP.NET Repeater项
- asp.net-identity – ASP.net身份 – UserManage
- asp.net – 将下拉列表的选定值传递给aspx中的参
- asp.net-mvc – 命名空间’System.Web.Mvc’中不
- asp.net上传文件到数据库的解决方案
- Asp.net Mvc表单验证气泡提示效果
- asp.net – SqlConnection localhost用户名失败
- ASP.NET MVC 4的Windows身份验证 – 它如何工作,
- asp.net-mvc – 使用文件扩展名创建ActionResult
- asp.net – 为什么我应该使用telerik radcontrol