我看了你的《如何把树与数据库的信息进行绑定》这篇文章后,在访问数据库上有点问题想请教下:数据库表如下:
ID YWBH ZD_ID PIC PIC_NAME ZSH QLR YT
5 NULL 2004 <二进制数据> xgbdfg ASDF GHJ 公共建筑用地
6 NULL 2004 <二进制数据> xgbdfg ASDF GHJ 公共建筑用地
7 NULL 2005 <二进制数据> wsefsa ASDF GHJ 公共建筑用地
8 NULL 2005 <二进制数据> fgjfgj ASDF GHJ 公共建筑用地
9 NULL 2006 <二进制数据> fuleyou 2006 suo 商业金融业用地private DataTable CreateTable()
{
conn.Open();//打开数据库连接
SqlDataAdapter da = new SqlDataAdapter("select * from T_DA_PIC", conn);//建立数据适配器
DataTable dt = new DataTable();//新建一个DataTable
da.Fill(dt);//进行数据填充
return dt;//返回一个数据表dt
}
private void CreateTree()
{
DataRow[] drArray = dt.Select("ZD_ID=0",
"ZD_ID ASC",
DataViewRowState.CurrentRows);
if (drArray.Length == 0) return;
TreeNode tnNew = null;
foreach (DataRow dr in drArray)
{
tnNew = treeView1.Nodes.Add(dr["PIC_NAME"].ToString());
tnNew.Tag = dr["ID"].ToString();//Save "EmployeeID" in node's tag
CreateTreeNode(ref tnNew);
}
}
private void CreateTreeNode(ref TreeNode tnParent)
{
//Get children data info
DataRow[] drArray = dt.Select(
string.Format("ZD_ID = {0}", tnParent.Tag),
"ZD_ID ASC",
DataViewRowState.CurrentRows);
if (drArray.Length == 0) return;
TreeNode tnNew = null;
foreach (DataRow dr in drArray)
{
tnNew = tnParent.Nodes.Add(dr["PIC_NAME"].ToString());
tnNew.Tag = dr["ID"].ToString();//Save "EmployeeID" in node's tag
CreateTreeNode(ref tnNew);
}
}我运行之后treeView1里面什么都没有!各位知道的能帮我解答下吗?
ID YWBH ZD_ID PIC PIC_NAME ZSH QLR YT
5 NULL 2004 <二进制数据> xgbdfg ASDF GHJ 公共建筑用地
6 NULL 2004 <二进制数据> xgbdfg ASDF GHJ 公共建筑用地
7 NULL 2005 <二进制数据> wsefsa ASDF GHJ 公共建筑用地
8 NULL 2005 <二进制数据> fgjfgj ASDF GHJ 公共建筑用地
9 NULL 2006 <二进制数据> fuleyou 2006 suo 商业金融业用地private DataTable CreateTable()
{
conn.Open();//打开数据库连接
SqlDataAdapter da = new SqlDataAdapter("select * from T_DA_PIC", conn);//建立数据适配器
DataTable dt = new DataTable();//新建一个DataTable
da.Fill(dt);//进行数据填充
return dt;//返回一个数据表dt
}
private void CreateTree()
{
DataRow[] drArray = dt.Select("ZD_ID=0",
"ZD_ID ASC",
DataViewRowState.CurrentRows);
if (drArray.Length == 0) return;
TreeNode tnNew = null;
foreach (DataRow dr in drArray)
{
tnNew = treeView1.Nodes.Add(dr["PIC_NAME"].ToString());
tnNew.Tag = dr["ID"].ToString();//Save "EmployeeID" in node's tag
CreateTreeNode(ref tnNew);
}
}
private void CreateTreeNode(ref TreeNode tnParent)
{
//Get children data info
DataRow[] drArray = dt.Select(
string.Format("ZD_ID = {0}", tnParent.Tag),
"ZD_ID ASC",
DataViewRowState.CurrentRows);
if (drArray.Length == 0) return;
TreeNode tnNew = null;
foreach (DataRow dr in drArray)
{
tnNew = tnParent.Nodes.Add(dr["PIC_NAME"].ToString());
tnNew.Tag = dr["ID"].ToString();//Save "EmployeeID" in node's tag
CreateTreeNode(ref tnNew);
}
}我运行之后treeView1里面什么都没有!各位知道的能帮我解答下吗?
解决方案 »
- 无言。
- 用户控件中的事件触发问题,详见问题
- 临时表在C#的使用问题
- 动态插入控件
- 我为这个问题哭了好久,大家帮帮我
- 请问能不能.net有没有一个机制能够控制 动态引用的一个外部类(如dll)的操作权限?
- TreeView怎样实现动态的添加父节点和子节点?
- 求救:windows8下的winform程序中文乱码的问题
- .net安装后出现后新建ASP.NET项目,出现http://localhost/webapplication1的地址和e:/inteput/wwwroot不符。请从新指定路径?怎么解决这
- C#中如何调用EXE文件?急!急!急!急!急!急!急!急!急!急!
- 非常奇怪和困惑的问题,大家来看
- COM口問題?
因为你用的递归的方法在做
"ZD_ID ASC",
DataViewRowState.CurrentRows);
你数据库表中的ZD_ID是2004,2005,2006....并没有改成代表根节点的0,或者子节点的1,2,3...
这相当于 ,一个班有N个学生,那这要建树型的话,班级就是父节点阿 ,跟我这个不是一样的吗?Student_id Student_name Class
1 zhangshan 1
2 lisi 1
3 wangwu 2
4 zhaoliu 2
5 chenqi 3
{
// 在此处放置用户代码以初始化页面
try
{
sqlConn.Open();
SqlDataAdapter sda=new SqlDataAdapter("select * from tab_dept_info",sqlConn);
//SqlDataAdapter sda=new SqlDataAdapter("select * from oper_dept_Que where oper_id='0001'",sqlConn);
DataSet ds=new DataSet();
sda.Fill(ds);
this.ViewState["ds"]=ds;
}
catch(Exception ex)
{
Response.Write("连接数据库错误!"+ex.Message);
}
finally
{
sqlConn.Close();
}
SqlDataAdapter sda1=new SqlDataAdapter ("select top 1 higher_dept_id from tab_dept_info",sqlConn);
//SqlDataAdapter sda1=new SqlDataAdapter ("select top 1 higher_dept_id from oper_dept_Que",sqlConn);
DataSet ds1=new DataSet();
sda1.Fill(ds1,"abc");
string aa;
aa=ds1.Tables["abc"].Rows[0]["higher_dept_id"].ToString();
AddTree(aa, (TreeNode)null);
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load); }
#endregion public void AddTree(string id,TreeNode pNode)
{
DataSet ds=(DataSet)this.ViewState["ds"];
DataView dv=new DataView(ds.Tables[0]);
dv.RowFilter="higher_dept_id = '"+id +"'";
foreach(DataRowView row in dv)
{
TreeNode node=new TreeNode();
if(pNode==null)
//说明是根节点
{
int fid=Convert.ToInt32(row["dept_id"].ToString());
node.Text=row["dept_name"].ToString();
TreeView1.Nodes.Add(node);
node.Expanded=true;
node.NavigateUrl="PersinQueMain.aspx?PositionID="+fid+"";
node.Target="main";
//AddTree(Int32.Parse(row["dept_ID"].ToString()),node);
AddTree(row["dept_ID"].ToString(),node);
}
else
{
int fid=Convert.ToInt32(row["dept_id"].ToString());
node.Text=row["dept_name"].ToString();
pNode.Nodes.Add(node);
node.Expanded=true;
node.NavigateUrl="PersinQueMain.aspx?PositionId="+fid+"";
node.Target="main";
//AddTree(Int32.Parse(row["dept_ID"].ToString()),node);
AddTree(row["dept_ID"].ToString(),node);
}
}
}
2004
---xgbdfg
---sddf
2005
----545255
----2656
2006
----2546652
DataView dv = new DataView( yourDataTable, null, "ZD_ID ASC", DataViewRowState.CurrentRows );
string strParentID = "";
TreeNode tnParent = null;
foreach( DataRowView drv in dv )
{
if( strParentID != drv["ZD_ID"].ToString() )
{
//Add parent node here
strParentID = drv["ZD_ID"].ToString();
tnParent = yourTreeView.Nodes.Add( strParentID );
}
tnParent.Nodes.Add( drv["PIC_NAME"].ToString() );
}
也感谢各位顶我的朋友!