This seems to be a bug in the control, since wouldn't this be a valid scenario?
My OnClientNodeChecked event gets fired in response to user click/check/uncheck. But when I programmatically call the check() method of the client-side node, the same event does not get raised.
Here's a repro page:
My OnClientNodeChecked event gets fired in response to user click/check/uncheck. But when I programmatically call the check() method of the client-side node, the same event does not get raised.
Here's a repro page:
<%@ Page Language="C#" AutoEventWireup="true" %> | |
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %> | |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> | |
<html xmlns="http://www.w3.org/1999/xhtml"> | |
<head runat="server"> | |
<style type="text/css">HTML { font-size: 10pt; font-family: Arial; }</style> | |
</head> | |
<body> | |
<form id="form1" runat="server"> | |
<asp:ScriptManager ID="ScriptManager1" runat="server" /> | |
<div> | |
<telerik:RadTreeView ID="myTree" OnClientNodeChecked="NodeWasChecked" CheckBoxes="true" runat="server"> | |
<Nodes> | |
<telerik:RadTreeNode Text="Node A"></telerik:RadTreeNode> | |
<telerik:RadTreeNode Text="Node B"></telerik:RadTreeNode> | |
<telerik:RadTreeNode Text="Node C"></telerik:RadTreeNode> | |
<telerik:RadTreeNode Text="Node D"></telerik:RadTreeNode> | |
<telerik:RadTreeNode Text="Node E"></telerik:RadTreeNode> | |
</Nodes> | |
</telerik:RadTreeView> | |
<input type="button" value="run repro" onclick="runRepro()" /> (checks every other node) | |
<script language="javascript" type="text/javascript"> | |
function runRepro() | |
{ | |
var tree = $find('<%= myTree.ClientID %>'); | |
var nodes = tree.get_nodes(); | |
for (var i=0; i<nodes.get_count(); i++) | |
if ((i%2)==0) { nodes.getNode(i).check(); } | |
} | |
function NodeWasChecked(sender, args) | |
{ | |
var text = document.createTextNode("Function was called: NodeWasChecked() - " + (new Date()).toString()); | |
if (ResultsDiv.childNodes.length > 0) | |
{ | |
ResultsDiv.insertBefore(document.createElement("br"), ResultsDiv.childNodes.item(0)); | |
ResultsDiv.insertBefore(text, ResultsDiv.childNodes.item(0)); | |
} | |
else | |
{ | |
ResultsDiv.appendChild(text); | |
} | |
} | |
</script> | |
</div> | |
<div style="border:1px solid red; margin-top: 50px;"> | |
<b>Expected Result:</b> clicking the button will not check nodes, but not raise the OnClientNodeChecked() event. | |
however, manually clicking the checkboxes will raise this event and | |
<br /><br /> | |
<b>OnClientNodeChecked() Results:</b> | |
<div id="ResultsDiv" style="font-size:8pt;"></div> | |
</div> | |
</form> | |
</body> | |
</html> | |