第一步,查找treeview的节点
var key = $("#txtQuery").val();
var searchElement = $("a:contains('" + key + "')");
if (searchElement.length == 0) {
alert("未找到");
return;
}
第二步:展开节点
1、查找它所有的上级节点
2、如果节点没有展开,则模拟点击事件
<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true"
CodeBehind="WebForm2.aspx.cs" Inherits="hyfw.WebForm2" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<title></title>
<script type="text/javascript">
function checkIsExpand(id) {
var reg = /treet(\d+)/;
var result = reg.exec(id);
var index = result[1];
var expandState = ContentPlaceHolder1_tree_Data.expandState.value.charAt(index)
if (expandState == "e")
return true;
else
return false;
}
$(document).ready(function () {
$("#btnSearch").click(function () {
var key = $("#txtQuery").val();
var searchElement = $("a:contains('" + key + "')");
if (searchElement.length == 0) {
alert("未找到");
return;
}
var fid = searchElement[0].name;
var parentArray = fid.split(",");
for (var i = 0; i < parentArray.length; i++) {
var treeA = $("#" + parentArray[i]);
if (treeA.length > 0) {
var treets = treeA.siblings();
if (treets.length == 0) {
treets = treeA.parent();
}
var treet = treets[0];
var id = treet.id;
var isExpand = checkIsExpand(id);
if (!isExpand) {
id = id.replace("treet", "treen");
$("#" + id).get(0).click();
}
}
}
})
})
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<input type="text" id="txtQuery" /><input type="button" id="btnSearch" value="查询" />
<asp:TreeView ID="tree" runat="server">
</asp:TreeView>
</asp:Content>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace hyfw
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
List<MemberGroup> groups = GetMemberGroups();
TreeNode rootNode = GetNode(10, "深圳市人民医院", "0,10");
tree.Nodes.Add(rootNode);
BuildTree(rootNode, groups, 10);
tree.CollapseAll();
}
}
void txtSearch_TextChanged(object sender, EventArgs e)
{
}
protected void BuildTree(TreeNode node, List<MemberGroup> groups, int fId)
{
List<MemberGroup> childGroups = groups.Where(g => g.GroupFId == fId).ToList();
if (childGroups.Count > 0)
{
foreach (MemberGroup group in childGroups)
{
TreeNode childNode = GetNode(group.GroupId, group.GroupName, group.Path);
childNode.SelectAction = TreeNodeSelectAction.None;
node.ChildNodes.Add(childNode);
BuildTree(childNode, groups, group.GroupId);
}
}
}
private static TreeNode GetNode(int groupId, string groupName, string path)
{
TreeNode childNode = new TreeNode() { Value = groupId.ToString() };
childNode.Text = "<a id='" + groupId.ToString() + "' name='" + path + "' href=\"#\" >" + groupName + "</a>";
return childNode;
}
public List<MemberGroup> GetMemberGroups()
{
List<MemberGroup> memberGroups = new List<MemberGroup>();
memberGroups.Add(new MemberGroup() { GroupFId = 0, GroupId = 10, GroupName = "深圳市人民医院", Path = "0" });
memberGroups.Add(new MemberGroup() { GroupFId = 10, GroupId = 1010, GroupName = "体检病人", Path = "0,10" });
memberGroups.Add(new MemberGroup() { GroupFId = 10, GroupId = 1011, GroupName = "住院病人", Path = "0,10" });
memberGroups.Add(new MemberGroup() { GroupFId = 10, GroupId = 1012, GroupName = "门诊病人", Path = "0,10" });
memberGroups.Add(new MemberGroup() { GroupFId = 1010, GroupId = 101010, GroupName = "集团用户", Path = "0,10,1010" });
memberGroups.Add(new MemberGroup() { GroupFId = 1010, GroupId = 101011, GroupName = "个人用户", Path = "0,10,1010" });
memberGroups.Add(new MemberGroup() { GroupFId = 101010, GroupId = 10101010, GroupName = "福田中学", Path = "0,10,1010,101010" });
memberGroups.Add(new MemberGroup() { GroupFId = 101010, GroupId = 10101011, GroupName = "南山中学", Path = "0,10,1010,101010" });
memberGroups.Add(new MemberGroup() { GroupFId = 101010, GroupId = 10101012, GroupName = "电信", Path = "0,10,1010,101010" });
memberGroups.Add(new MemberGroup() { GroupFId = 1011, GroupId = 101110, GroupName = "泌尿外科", Path = "0,10,1011" });
memberGroups.Add(new MemberGroup() { GroupFId = 101110, GroupId = 10111011, GroupName = "心内科", Path = "0,10,1011,101110" });
memberGroups.Add(new MemberGroup() { GroupFId = 101110, GroupId = 10111012, GroupName = "膀胱癌", Path = "0,10,1011,101110" });
memberGroups.Add(new MemberGroup() { GroupFId = 101110, GroupId = 10111013, GroupName = "前列腺癌", Path = "0,10,1011,101110" });
return memberGroups;
}
}
public class MemberGroup
{
public int GroupId { get; set; }
public string GroupName { get; set; }
public int GroupFId { get; set; }
public string Path { get; set; }
}
}