2012-07-15 101 views
1

以下.NET 4.0代码在IE9,Chrome 20和Opera 12中完美运行,但在Firefox 13中表现不佳。所有浏览器均为默认安装,不含插件。适用于除Firefox以外的所有浏览器的ASP.NET TreeView代码

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"><title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:TreeView ID="Treeview1" Runat="server" 
      onclick="javascript:postBackByObject()" 
      ontreenodecheckchanged="Treeview1_TreeNodeCheckChanged" 
      ShowCheckBoxes="All" > 
      <Nodes> 
       <asp:TreeNode Value="Child1" Expanded="True" Text="1"> 
       <asp:TreeNode Value="Grandchild1" Text="A" /> 
       <asp:TreeNode Value="Grandchild2" Text="B" /> 
      </asp:TreeNode> 
       <asp:TreeNode Value="Child2" Text="2" /> 
       <asp:TreeNode Value="Child3" Expanded="True" Text="3"> 
       <asp:TreeNode Value="Grandchild1" Text="A" /> 
      </asp:TreeNode> 
      </Nodes> 
     </asp:TreeView> 
     <asp:TextBox ID="TextBox1" runat="server" Height="156px" TextMode="MultiLine" 
      Width="295px"></asp:TextBox> 
    </div> 
    </form> 
</body> 
    <script language="javascript" type="text/javascript"> 
     function postBackByObject() { 
     var o = window.event.srcElement; 
     if (o.tagName == "INPUT" && o.type == "checkbox") { 
      __doPostBack("", ""); 
     } 
    } 
</script> 
</html> 

我试图赶上树节点复选框事件背后下面的代码:

protected void Treeview1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e) 
    { 
    TextBox1.Text += e.Node.Text; 
    } 

这是很烦人的 - 任何解决方案是值得欢迎的!

回答

1

尝试更一般地处理事件,因此它可以在FF和其他浏览器中使用。

例如

onclick="javascript:postBackByObject(event)" 

function postBackByObject(e) { 
    var evt = e || window.event; 
    var o = evt.target || evt.srcElement; 
    if (o.tagName == "INPUT" && o.type == "checkbox") { 
     __doPostBack("", ""); 
    } 
} 

编辑我忘了添加一行的目标/ srcElement

+0

非常感谢添:现在的代码工作完全在四大浏览器。大! – jacques 2012-07-16 06:50:15

+0

使用此更新面板后无法使用。 – SANDEEP 2018-03-08 09:50:46

相关问题