动态绑定treeview
一、 页面
<asp:TreeView ID="tvNvg" runat="server" on
</asp:TreeView>
二、后台
代码
protected void BindTree()
{
this.tvNvg.Nodes.Clear();
DataTable dt = bll.GetAllNavigations();
TreeNode treeRoot = new TreeNode();
treeRoot.Text = "Navigation";
treeRoot.Value = "0";
treeRoot.Expanded = true;
foreach (DataRow dr in dt.Rows)
{
int iParentId = int.Parse(dr["parentId"].ToString());
int iChildId = int.Parse(dr["id"].ToString());
string strNodeName = dr["name"].ToString();
string strNavigationUrl = dr["url"].ToString();
TreeNode node = new TreeNode();
if (iParentId == 0)
{
node.Text = strNodeName;
node.Value = iChildId.ToString();
node.NavigateUrl = strNavigationUrl;
treeRoot.ChildNodes.Add(node);
}
BindChildTree(iChildId, node, strNodeName,strNavigationUrl, dt);
}
this.tvNvg.Nodes.Add(treeRoot);
}
public void BindChildTree(int iChildId, TreeNode node, string strNodeName,string strNavigation, DataTable dv)
{
node.Value = iChildId.ToString();
node.Text = strNodeName;
node.NavigateUrl = strNavigation;
foreach (DataRow dr in dv.Rows)
{
int _parentId = int.Parse(dr["parentId"].ToString());
int _childId = int.Parse(dr["id"].ToString());
string _childNodeName = dr["name"].ToString();
string _navigation = dr["url"].ToString();
TreeNode childNode = new TreeNode();
childNode.Value = _childId.ToString();
childNode.Text = _childNodeName;
childNode.NavigateUrl = _navigation;
if (_parentId == iChildId)
{
node.ChildNodes.Add(childNode);
BindChildTree(_childId, childNode, _childNodeName, _navigation, dv);
}
}
}
public static void AddChildNode(DropDownList ddr, DataTable dt, string strParentCode, string s)
{
DataView dv = new DataView(dt);
dv.RowFilter = "parentId=" + strParentCode;
foreach (DataRowView dr in dv)
{
ddr.Items.Add(new ListItem(s + ">>" + dr["name"].ToString(), dr["id"].ToString()));
AddChildNode(ddr, dt, dr["id"].ToString(), s + ">>" + dr["name"].ToString());
}
}
给 TreeView 添加 “点击”,“双击”,“右击”等JS事件
代码
在asp.net 中,自2005以后,vs就增加了这个控件,但事件单一,不能满足我们特殊或者说是大部分功能,
比如,经常使用的单位下部分选人的功能,用树目录肯定是最好的选择了,结构清晰,但它只支持鼠标单击事件,如果双击,或右击等事件咋加呢?请看下面:(其实很简单)
当我们用程序绑定控件的时候,新建立的是treenode节点,我们就在这加了,treenode有个text属性,就是显示节点标题了,但荣幸的事这个可以支持html标记,你想到了什么呢?哈哈
//////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
cs代码:
TreeNode subnode = new TreeNode("<a href='#' onDblClick=\"abc('"+mydata["n_name"].ToString()+"')\">"+mydata["n_name"].ToString()+"</a>", mydata["n_node"].ToString());
//////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
前台的abc()js方法
function abc(aa)
{
alert(aa);
}
//////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////