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