BLL.Area bll = new BLL.Area();
protected void Page_Load(object sender, EventArgs e)
{
this.BindTreeViewMenu();
} private void BindTreeViewMenu()
{
DataRow dr;
DataSet ds = bll.GetList(" ParentID=1 ");
int intLen = ds.Tables[0].Rows.Count;
for (int i = 0; i < intLen; i++)
{
TreeNode trnTmp = new TreeNode();
dr = ds.Tables[0].Rows[i];
trnTmp.Text = dr["AreaName"].ToString();
this.treeArea.Nodes.Add(trnTmp);
}父ID"ParentID"为1的一级目录都正常显示了,怎么能把每个一级目录下边的子目录显示出来啊?这个.CS文件应该怎么改啊?
解决方案 »
- vc++2008 中如何将整数转换成字符串?
- 兄弟们,你们开发项目一般会写哪些文档·?~
- 获得Word文档中的章节信息(大纲信息)
- c#调用以前的Dll问题,请前辈帮小弟看下代码,小弟先感谢了!
- 禁止打开图片终极地址
- 怎樣將收藏夹中的所有文字及鏈接自動導出成XML文件?用C# WINFORMS或WEB FORMS均可。
- 实现增加、删除、修改在C#里DATAGRID是唯一,或是最好的控件了吗?
- 本地化如何把缺省状态的对话框变的和某个特定语言一致?
- 这列为什么还不会隐藏呢,还少什么
- 请问C#怎样能使用到。NET上去呀
- Datagridview中的数据添加到list泛型集合中怎么添加
- 2个datagridview拉动滚动条时同步
protected void Page_Load(object sender, EventArgs e)
{
GetTable();
Bind_Tree(0, null);
}
public void Bind_Tree(int fid,TreeNode node)
{
DataTable dt = ViewState["Table"] as DataTable;
DataRow[] row = dt.Select("fParentid=" + fid + "");
foreach (DataRow r in row)
{
TreeNode n = new TreeNode(r["fname"].ToString(), r["fid"].ToString());
if (fid == 0)
TreeView1.Nodes.Add(n);
else
node.ChildNodes.Add(n);
Bind_Tree(Convert.ToInt32(r["fid"]), n);
}
}
public void GetTable()
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["daxueConnection"].ConnectionString;
conn.Open();
string strSql = "select fid,fname,fParentid from daxue";
SqlDataAdapter da = new SqlDataAdapter(strSql, conn);
DataTable dt = new DataTable();
da.Fill(dt);
ViewState["Table"] = dt;
}
}
请高手按照2楼的看下我的代码应该怎么改啊?
BLL.Area area = new BLL.Area();
protected void Page_Load(object sender, EventArgs e)
{
this.BindTreeView(1,null);
} private void BindTreeView(int id,TreeNode node)
{
string strwhere = string.Format(" ParentID={0} ",id);
DataSet ds = bll.GetList(strwhere);
int intLen = ds.Tables[0].Rows.Count;
for (int i=0 ; i < intLen; i++)
{
TreeNode n = new TreeNode(ds.Tables[0].Rows[i]["AreaName"].ToString(), ds.Tables[0].Rows[i]["ID"].ToString());
if (Convert.ToInt32(ds.Tables[0].Rows[i]["ParentID"].ToString())==1)
{
this.treeArea.Nodes.Add(n);
}
else
{
node.ChildNodes.Add(n);
}
BindTreeView(Convert.ToInt32(ds.Tables[0].Rows[i]["ID"].ToString()), n);
}
}
{
string sql = "select * from doctype where isdel=0";
DataTable dt = db.ExecuteDataTable(sql, CommandType.Text, null);
DataRow[] dr=dt.Select("updirid='-1'");
for (int i = 0; i < dr.Length; i++)
{
TreeNode tn = new TreeNode();
tn.Text = dr[i]["docdirname"].ToString();
tn.Tag=dr[i]["docdirid"].ToString();
if (dr[i]["isdir"].ToString() == "1")
{
tn.ImageIndex = 0;
FillTree(tn, dt);
}
else
{
tn.ImageIndex = 1;
}
treeView1.Nodes.Add(tn);
}
} private void FillTree(TreeNode node, DataTable dt)
{
DataRow[] dd = dt.Select("updirid='"+node.Tag.ToString()+"'");
if (dd.Length > 0)
{
for (int i = 0; i < dd.Length; i++)
{
TreeNode tnn = new TreeNode();
tnn.Text = dd[i]["docdirname"].ToString();
tnn.Tag = dd[i]["docdirid"].ToString();
if (dd[i]["isdir"].ToString() == "1")
{
tnn.ImageIndex = 0;
FillTree(tnn, dt);
}
else
{
tnn.ImageIndex = 1;
}
node.Nodes.Add(tnn);
}
}
}
{
string strwhere = string.Format(" ParentID={0} ",id);
DataSet ds = bll.GetList(strwhere);
int intLen = ds.Tables[0].Rows.Count;
for (int i=0 ; i < intLen; i++)
{
TreeNode n = new TreeNode(ds.Tables[0].Rows[i]["AreaName"].ToString(), ds.Tables[0].Rows[i]["ID"].ToString());
if (Convert.ToInt32(ds.Tables[0].Rows[i]["ParentID"].ToString())==1)
{
this.treeArea.Nodes.Add(n);
}
else
{
node.ChildNodes.Add(n);
}
BindTreeView(Convert.ToInt32(ds.Tables[0].Rows[i]["ID"].ToString()), n);
}
}
你哪个地方在循环访问数据库,,
请问该怎么调整?
另外需要对节点进行编辑修改删除 应该怎么改?
我5楼的帖子不是写的很清楚吗?
在现有的数据集datatable里面进行二次查询,,,
node.text=要修改的name;
删除
tv.SelectedNode.Remove();
id=node.tag.toString();
记得通过id在数据库中进行修改和删除操作结贴吧