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> | |
