WebDataMenu的MenusItems在服务器上没有事件触发
本文关键字:事件 MenusItems 服务器 WebDataMenu | 更新日期: 2023-09-27 18:08:03
我目前正在使用远程WebDataMenus
动态添加项目;通过它,我可以访问表单,甚至触发事件来执行一些函数或逻辑定义。
当我想运行我的VB时,问题出现了。. NET代码通过ItemClick
类型事件,此事件不能正常工作;或者至少我不能让它在服务器端工作(它不触发),但它通过JavaScript在客户端工作得很好。
值得一提的是,当我点击菜单中的任何项来运行时,我的VB。. NET代码给了我一个JavaScript错误'__doPostBack' is undefined
-我如何能使这项工作,并从我的VB运行事件。NET代码?
PS:为了使它现在工作,我正在运行VB。通过在ScriptManager
上设置EnablePageMethods = True
属性,从JavaScript通过指令PageMethods.WebDataMenu2_ItemClick (eventArgs.getItem (). Get_key ());
调用。
然而,这不允许我从我运行的方法中使用我的其他控件,它在每个控件中给我一个初始化错误。
-
添加菜单和菜单项。
HTML代码
<ig:webdatamenu ID="WebDataMenu2" runat="server" Font-Bold="False" Font-Names="Arial Narrow" Font-Overline="False" Font-Size="10px" Width="100%" > <GroupSettings Orientation="Horizontal" /> <ClientEvents ItemClick="WebDataMenu2_ItemClick" /> </ig:webdatamenu>
vb。. NET代码向菜单添加项
ut = New Infragistics.Web.UI.NavigationControls.DataMenuItem ut.Text = ds.Tables(0).Rows(0).Item("x1").ToString() ut.ToolTip = ds.Tables(0).Rows(0).Item("x1").ToString() ut.Key = "0" ut.ImageUrl = "~/ImagesToolBar/employee20.gif" WebDataMenu2.Items.Add(ut) ut = New Infragistics.Web.UI.NavigationControls.DataMenuItem ut.Text = ds.Tables(0).Rows(0).Item("x2").ToString() ut.ToolTip = ds.Tables(0).Rows(0).Item("x2").ToString() ut.Key = "1" ut.ImageUrl = "~/ImagesToolBar/timecard20.gif" WebDataMenu2.Items.Add(ut)
-
目前我添加了一个客户端事件
function WebDataMenu2_ItemClick(sender, eventArgs) { if (eventArgs.getItem().get_key() != '') { alert('test2: ' + eventArgs.getItem().get_key()); } }
-
VB。NET代码在这里触发VB中的事件。. NET(此处执行此方法失败)
Protected Sub WebDataMenu2_ItemClick1(sender As Object, e As Infragistics.Web.UI.NavigationControls.DataMenuItemEventArgs) Handles WebDataMenu2.ItemClick nodotext = e Select Case nodotext Case "0" Session("IT") = 2 Session("I") = 1 ident = Session("I") Case "1" Session("IT") = 2 Session("I") = 800 ident = Session("I") Case "2" Session("IT") = 2 Session("I") = 5 ident = Session("I") Case "3" Session("IT") = 2 Session("I") = 6 ident = Session("I") Case "7" Session("IT") = 2 Session("I") = 39 ident = Session("I") Case "8" Session("IT") = 2 Session("I") = 80 ident = Session("I") Case "4" Session("IT") = 2 Session("I") = 100 Session("RI") = 101 Case Else End Select Inicio() End Sub
我使用您提供的代码在一个简单的示例中测试了这一点,它按预期工作。关于__doPostBack未定义的错误将阻止服务器端事件触发,因为这是asp.net进行post back的方式。
我建议您检查生成的html文件,以验证是否定义了此事件:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
如果事件被定义,检查无效的html,其中可能你错过了一个结束标签,或者可能你在页面上有其他无效的脚本,导致问题。