我正在使用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
方法,因为它为我提供了有关该特定节点是否可以删除的值,是否已启用等等。
那么我有什么办法可以做到以下几点:
tvAssets_NodeClick
无法运行或您能想到的任何其他替代方案。我的客户端事件如下:
function onDoubleClick(sender, eventArgs) {
document.getElementById("<%=hdisDoubleClick.ClientID %>").value = "True";
//document.cookie = "CookieName=True;";
}
答案 0 :(得分:0)
这是一个棘手的案例 - 您已订阅单击事件(服务器端)和双击事件(客户端)。
可能在双击时 - 第一次单击已经触发服务器端事件,双击事件处理程序的javascript代码不会完全执行。
也许现在是评估是否需要这两个事件的好时机。