RadTreeView

时间:2015-06-23 15:22:17

标签: javascript c# asp.net treeview

我正在使用Telerik RadTreeView,其中包含onNodeClick - 服务器端事件和OnClientDoubleClick - 客户端事件。我想为OnClientDoubleClick使用model popup功能。我面临的问题是代码隐藏事件与我的客户端事件冲突。 当我双击treeview上的任何节点时,javascript函数OnDoubleClick以及treeViewAssets_NodeClick方法运行,当用户选择服务器端的节点(单击)时,会发生这种情况。 这是我的树视图控件

 <telerik:RadTreeView ID="tvAssets" runat="server" AccessKey="W" CheckBoxes="True" CheckChildNodes="True" TriStateCheckBoxes="True" OnNodeClick="tvAssets_NodeClick" OnClientDoubleClick="onDoubleClick">

我试图停止代码隐藏方法,但我没有成功。它只使树视图节点无法选择。我也尝试从javascript传递hiddenfields的值,以便基于值我可以跳过代码隐藏方法中的代码,但代码隐藏方法总是检索我在javascript函数中传递的空值。

 protected void tvAssets_NodeClick(object sender, RadTreeNodeEventArgs e)
    {
        string value = hdisDoubleClick.Value;
        string doubleClick = "";
            if (value == null || value == "")
            {
                doubleClick = "false";
            }                
            if (doubleClick == "True")
            {
                ModalPopupExtender1.Show();
                hdisDoubleClick.Value = "False";
                return;
            }
       //code for tvAssets_NodeClick

    }

我尝试使用session,viewstate,cookies而不是hiddenfield,但我获得的值始终为null。我还尝试在javascript中使用button.click()函数来传递值,但tvAssets_NodeClick上的codebehind方法会触发,从而消除传递任何值的机会。

我是编程的新手,所以我必须做错了,尝试在发生回发时从客户端方法中获取值...这会在webform中创建控件的新实例或类似的东西......也许就是&# 39;为什么我收到nullexception错误。

我无法删除tvAssets_NodeClick方法,因为它为我提供了有关该特定节点是否可以删除的值,是否已启用等等。

那么我有什么办法可以做到以下几点:

  1. 发生回发时,从客户端传递值。
  2. 从javascript停止代码隐藏方法,以便tvAssets_NodeClick无法运行或您能想到的任何其他替代方案。
  3. 我的客户端事件如下:

    function onDoubleClick(sender, eventArgs) {
            document.getElementById("<%=hdisDoubleClick.ClientID %>").value = "True";           
            //document.cookie = "CookieName=True;"; 
        }
    

1 个答案:

答案 0 :(得分:0)

这是一个棘手的案例 - 您已订阅单击事件(服务器端)和双击事件(客户端)。

可能在双击时 - 第一次单击已经触发服务器端事件,双击事件处理程序的javascript代码不会完全执行。

也许现在是评估是否需要这两个事件的好时机。