One of the ASTreeView user submitted a request that he wants to get the selected and checked nodes on the client side.
The result will looks like:
Here’s the solution:
Get the selected node
1. Create a container for holding the text.( of course you need to change it to match your situation):
<asp:TextBox ID="txtSelectedNode" runat="server"></asp:TextBox>
2. Set the OnNodeSelectedScript of ASTreeView:
OnNodeSelectedScript="selectionHandler(elem);"
3. Implement the javascript method:
function selectionHandler(){
var tempText = '';
function tempOnSelectHandler(li){
//if the node is selected
if( li.getAttribute('selected') != 'true' )
return;
var a = li.getElementsByTagName('A')[0];
if( !a )
return;
tempText += (a.innerHTML + ',');
}
//traverse the whole tree to get the selected node
<%=this.astvMyTree.GetClientTreeObjectId() %>
.traverseTreeNode( tempOnSelectHandler );
if( tempText.length > 0 )
tempText = tempText.substr( 0, tempText.length - 1 );
//set the text to the textbox
document.getElementById('<%=txtSelectedNode.ClientID %>')
.value = tempText;
}
Get the checked nodes
1. Also create a container first:
<asp:TextBox ID="txtCheckedNodes" runat="server" Width="500" TextMode="MultiLine"></asp:TextBox>
2. Set the OnNodeCheckedScript property of ASTreeView:
OnNodeCheckedScript="checkHandler(elem);"
3. Implement the javascript method:
function checkHandler(){
var tempText = '';
function tempOnCheckedHandler(li){
//change it to false if you don't want
// the half-checked nodes included.
var includeHalfChecked = true;
if( li.getAttribute('checkedState') == '0'
|| ( li.getAttribute('checkedState') == '1'
&& includeHalfChecked ) ){
var a = li.getElementsByTagName('A')[0];
if( !a )
return;
tempText += (a.innerHTML + ',');
}
}
//traverse the whole tree.
<%=this.astvMyTree.GetClientTreeObjectId() %>
.traverseTreeNode( tempOnCheckedHandler );
if( tempText.length > 0 )
tempText = tempText.substr( 0, tempText.length - 1 );
//set the textbox
document.getElementById('<%=txtCheckedNodes.ClientID %>')
.value = tempText;
}
Sample download:
You can download the working sample here: http://www.jinweijie.com/download/GetSelectedCheckedNodesClientSideSample.zip