asp treeview绑定数据库

 
TreeView控件要求绑定到xml数据源上,所以必须设法把数据库中的内存转成xml文件,然后再进行绑定。 
首先,在网页中添加一个XmlDataSource: 
<asp:XmlDataSource ID="XmlDataSource1" runat="server"></asp:XmlDataSource> 
和一个TreeView控件: 
<asp:TreeView ID="TreeView1" runat="server"></asp:TreeView> 

然后在Page_load事件中添加以下代码: 

// 连接数据库 
SqlConnection conn = new SqlConnection("连接字符串"); 
SqlCommand cmd = new SqlCommand("SELECT * FROM 数据表", conn); 
conn.Open(); 
SqlDataReader reader = cmd.ExecuteReader(); 

// 新建XML文档 
XmlDocument doc = new XmlDocument(); 
XmlElement root; 
XmlElement element; 

// 插入xml声明 
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", null, "yes"); 
doc.InsertBefore(dec, doc.DocumentElement); 

// 用来记录根节点元素 
ArrayList elements = new ArrayList(); 

// 插入第一个节点 
reader.Read(); 
element = doc.CreateElement((string)reader["name"]); 
elements.Add(element); 
doc.InsertAfter(element, dec); 

// 插入后面的子节点 
while (reader.Read()) 
{ 
// 创建子节点 
element = doc.CreateElement((string)reader["name"]); 
elements.Add(element); 

// 找到它的父节点,然后添加到父节点下 
root = (XmlElement)elements[(int)reader["parent"]-1]; 
root.AppendChild(element); 
} 

// 保存xml文件 
FileStream fs = new FileStream(@"D:\Temp\names.xml", FileMode.Create); 
doc.Save(fs); 
fs.Close(); 

// 设置xml数据源控件并把它绑定到TreeView控件上 
XmlDataSource1.DataFile = @"D:\Temp\names.xml"; 
TreeView1.DataSource = XmlDataSource1; 
TreeView1.DataBind(); 

这样TreeView1就绑定了一个从数据库中读出的树结构,并在网页中显示出来。
再说明一下,TreeView是不可能绑定到一个关系数据库表的数据源上的,只能绑定到Xml数据源或SiteMapDataSource。
 
 

TreeView的数据绑定资源默认的有两类:XML和SiteMap 

这两类资源的共同特点就是资源文件是固定保存在项目中的,这一类方便我们使用来做菜单,所以TreeView归类在导航控件中.这里的绑定我不做详细的叙述,VS2005中可以很方便的使用.

TreeView还有一种用法是用来显示数据信息及其数据信息的层级信息,这里上面的两类就不能满足我们的需要,我们需要的是与数据库资源连接,而形成动态的TreeView.同样我们还可以在数据库中使用树的双亲表示法把树描述出来,例如

IDNameParentID
110
220
330
441
551
662
772
883
997

使用这种的数据库方法可以很方便的绑定到TreeView中,形成一个无限动态树.(当然还有其他的数据库的方法)

private void InitTree(TreeNodeCollection Nds, string ParentId)

    ...{

        DataView dvroles = new DataView();

        TreeNode tmpNd;

        

        string strRID;

        dvroles.Table = csa.CreateDataSet("DS1").Tables["T1"];//DataSet的DataTable表中

        dvroles.RowFilter = " ParentID=" + ParentId;

        foreach (DataRowView drvrole in dvroles)

        ...{

            strRID = drvrole["ID"].ToString();

            tmpNd = new TreeNode();

            tmpNd.Value = drvrole["ID"].ToString();

            tmpNd.Text = drvrole["Name"].ToString();

            tmpNd.Target = drvrole["ParenID"].ToString();

            Nds.Add(tmpNd);

            InitRoleTree(tmpNd.ChildNodes, strRID);

        }

    }

在这里我们可以进行控制的树的信息有

Value节点的ID
Text节点的显示信息
Target关联网页内容的目标窗口,如果没有关联网页,也可以做一个数据容器
ToolTip节点文本提示工具
ImageUrl节点图片
ImageToolTip节点图片文本提示工具
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值