|
RadControls version |
Q3 2010 or later
|
| .NET version |
4
|
| Visual Studio version |
2010 |
| programming language |
C#, Javascript |
| browser support |
all browsers supported by RadControls
|
PROJECT DESCRIPTION
This project shows how to filter the Treeview, so that only the nodes that contain the text entered through the TextBox remain visible.
ASPX:
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript">
var timer = null;
function clientLoad(sender) {
$telerik.$(".riTextBox", sender.get_element().parentNode).bind("keydown", valueChanging);
}
function valueChanging(sender, args) {
if(timer)
{
clearTimeout(timer);
}
timer = setTimeout(function() {
var tree = $find("<%= RadTreeView1.ClientID %>");
var textbox = $find("<%= RadTextBox1.ClientID %>");
var searchString = textbox.get_value();
for (var i = 0; i < tree.get_nodes().get_count(); i++) {
findNodes(tree.get_nodes().getNode(i), searchString);
}
}, 200);
}
function findNodes(node, searchString) {
node.set_expanded(true);
var hasFoundChildren = false;
for (var i = 0; i < node.get_nodes().get_count(); i++) {
hasFoundChildren = findNodes(node.get_nodes().getNode(i), searchString) || hasFoundChildren;
}
if (hasFoundChildren || node.get_text().toLowerCase().indexOf(searchString.toLowerCase()) != -1) {
node.set_visible(true);
return true;
}
else {
node.set_visible(false);
return false;
}
}
</script>
<div>
<telerik:RadTextBox ClientEvents-OnLoad="clientLoad" ID="RadTextBox1" runat="server"/>
<telerik:RadTreeView ID="RadTreeView1" runat="server">
</telerik:RadTreeView>
</div>
</form>
</body>
C#:
Tree.xml: