RadTreeView 客户端事件和服务器端事件冲突

Client-side event and Server-side event conflict on RadTreeView

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

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

我试图停止代码隐藏方法,但我没有 successful.It 只是使树视图节点不可选择。我还尝试从 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

    }

我尝试使用会话、视图状态、cookie 而不是隐藏字段,但我得到的值始终为空。我还尝试在 javascript 中使用 button.click() 函数来传递值,但是 codebehind 上的 tvAssets_NodeClick 方法会触发消除传递任何值的机会。

我是编程新手,所以我一定做错了,当发生回发时试图从客户端方法获取值..这会在 webform 或类似的东西中创建新的控件实例..也许这就是我收到 nullexception 错误的原因。

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

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

  1. 发生回发时从客户端传递值。
  2. 停止 javascript 的代码隐藏方法,这样 tvAssets_NodeClick 就不会 运行 或您能想到的任何其他替代方法。

我的客户端事件如下:

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

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

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

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