读书人

TREEVIEW绑定以后不能显示

发布时间: 2011-12-24 23:03:24 作者: rapoo

TREEVIEW绑定之后不能显示
以下是代码,为什么可以运行,但是在网页之中显示不出来

一个显示页面Default.aspx


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>无标题页 </title>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:TreeView ID="tvMenu" runat="server" ImageSet="Faq" ShowLines="True" ExpandDepth="0" Target="middle" >
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="Purple" />
<SelectedNodeStyle Font-Underline="True" HorizontalPadding="0px" VerticalPadding="0px" />
<NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="DarkBlue" HorizontalPadding="5px"
NodeSpacing="0px" VerticalPadding="0px" />
</asp:TreeView>

</div>
</form>
</body>
</html>


一个代码隐藏页Default.aspx.cs


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
SqlConnection Conn = new SqlConnection("server=20090207-0309;database=checkthree;uid=sa;pwd=1111");

DataSet ds;
protected void Page_Load(object sender, EventArgs e)
{
Conn.Open();
this.createDataSet();
Conn.Close();
this.InitTree(tvMenu.Nodes, "0");
}
private DataSet createDataSet()
{
ds = new DataSet();
string sqlStr = "select * from Tree ";
SqlDataAdapter cmdSelect = new SqlDataAdapter(sqlStr, Conn);
cmdSelect.Fill(ds, "Tree");
return ds;
}
protected void InitTree(TreeNodeCollection Nds, string parentId)//用递归方法动态生成节点
{
DataView dv = new DataView();
TreeNode tmpNode;
dv.Table = ds.Tables["Tree"];
dv.RowFilter = "pat_id=" + "'" + parentId + "'";
foreach (DataRowView drv in dv)
{
tmpNode = new TreeNode();
tmpNode.Value = drv["node_id"].ToString();
tmpNode.Text = drv["naode_name"].ToString();
tmpNode.NavigateUrl = drv["url"].ToString();
Nds.Add(tmpNode);


this.InitTree(tmpNode.ChildNodes, tmpNode.Value);
}
}


}


[解决办法]
this.treeview.databind();
[解决办法]
Web模式下什么都要DataBind();
treeview.databind();
[解决办法]
Page.DataBind() 与 Control.DataBind()
为 .aspx 页上的对象确定并设置了特定数据源后,必须将数据绑定到这些数据源。
您可以使用 Page.DataBind 或 Control.DataBind 方法将数据绑定到数据源。

这两种方法的使用方式很相似。主要差别在于:
调用 Page.DataBind 方法后,所有数据源都将绑定到它们的服务器控件。在显式调用 Web 服务器控件的 DataBind 方法或在调用页面级的 Page.DataBind 方法之前,不会有任何数据呈现给控件。通常,可以从 Page_Load 事件调用 Page.DataBind(或 DataBind)。

有关 DataBind 方法的详细信息,请参阅以下 .NET Framework SDK 文档:Control.DataBind 方法
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpr
[解决办法]
Conn.Open();
this.createDataSet();
Conn.Close();
this.InitTree(tvMenu.Nodes, "0");

把这部分代码放到Page.isPostBack()中

[解决办法]
在你执行操作后加上
this.bind();
//然后在代码里加上下面的:
private void bind()
{
dataset ds = ;//得到数据源,
gridview1.datasource = ds.table[0].default;
gridview1.datbind();
}
提醒:注意大小写。

读书人网 >.NET

热点推荐