http://topic.csdn.net/u/20071104/11/f087b899-7750-4087-8030-343a7885623c.html
有个兄弟遇到了与我同样的问题!
有个兄弟遇到了与我同样的问题!
解决方案 »
- 最近想学习一下mvc,有什么好书或者好的demo吗?
- .net 分页
- 小妹求助系列-身份验证
- 由于该控件目前不可见、未启用或其类型不允许,因此无法将焦点移向它
- 问:设计asp.net界面时候能否让界面上表格和所有列的宽度按照百分比,而不是PX.
- 高手请进.....一个类似于购物车的问题...谢谢....
- 如何使linq查询返回的集合,能有datatable 的功能...
- asp.net获取用户所用的浏览器的类型
- 大侠们,帮忙呀,散分!!
- 不知道为什么将word转换成图片过一段时间就死掉了 回收一下又可以了,这是什么原因?
- 怎样才能记住状态
- 在Web窗体设计器未能加载该文件 自定义封送拆收器...不实现ICustomMarshaler接口
protected void BindTree(TreeNode tn, DataRow[] rows)
{
TreeNode node;
if(rows.count < 1)
{return;}
foreach (DataRow row in rows)
{
node = new TreeNode();
node.Text = row[ "menu_name "].ToString();
node.NavigateUrl = row[ "URL "].ToString() + "?ID= " + row[ "menu_id "].ToString();
node.Target = "rightFrame ";
tn.ChildNodes.Add(node);
DataRow[] ChildRows = row.GetChildRows( "relation ");
if (ChildRows.Length != 0)
{
BindTree(node, ChildRows);
}
}
}
protected void BindTree()
{
Users U = new Users();
U.Name = Session[ "LoginUserName "].ToString();
DataSet ds = U.GetMenusByName();
if(ds==null ||ds.tables.count<1)
{return;}
DataTable dt = ds.Tables[0];
DataRelation dr = new DataRelation( "relation ", dt.Columns[ "menu_id "], dt.Columns[ "father_id "]);
dt.DataSet.Relations.Add(dr);
DataRow[] rows = dt.Select( "father_id is null ");
if(rows.count < 1)
{return;}
TreeNode node;
foreach (DataRow row in rows)
{
node = new TreeNode();
node.Text = row[ "menu_name "].ToString();
node.NavigateUrl = row[ "URL "].ToString() + "?ID= " + row[ "menu_id "].ToString();
node.Target = "rightFrame ";
this.TreeView1.Nodes.Add(node);
DataRow[] ChildRows = row.GetChildRows( "relation ");
if (ChildRows.Length != 0)
{
BindTree(node, ChildRows);
}
}
}
//开始动态绑定导航栏
DataView DV3 = Socut.Data.ExecuteDataSet("select title,id from vod_catalog order by number desc").Tables[0].DefaultView;
foreach (DataRowView datav in DV3)
{
TreeNode tn = new TreeNode();
tn.Text = datav["title"].ToString();
tn.Value = datav["id"].ToString();
tn.Expanded = false; tn.SelectAction = TreeNodeSelectAction.Expand; TreeView1.Nodes.Add(tn); AddChildNodes(tn);
}public void AddChildNodes(TreeNode tnChild)
{
int bid = Convert.ToInt32(tnChild.Value);
DataView DV = Socut.Data.ExecuteDataSet("select title,id from vod where catalog_id=" + bid + "").Tables[0].DefaultView;
foreach (DataRowView datav in DV)
{
TreeNode tn2 = new TreeNode();
tn2.Text = datav["title"].ToString();
tn2.Value = datav["id"].ToString();
tn2.NavigateUrl = "vod.aspx?id=" + datav["id"].ToString();
tnChild.ChildNodes.Add(tn2);
}
}
换一下呢,先生成字节点,再添到树上
修改treeview 所需的脚本文件的路径
// 循环结果集
private void CreateTree(TreeNodeCollection Nds, string sParentId)
{
DataView dv = new DataView();
TreeNode tmpNd;
dv.Table = oDs.Tables[0];
dv.RowFilter = "parent_code='" + sParentId + "'";
foreach (DataRowView drv in dv)
{
tmpNd = new TreeNode();
tmpNd.Value = drv["menu_code"].ToString();
tmpNd.Text = drv["menu_name"].ToString();
Nds.Add(tmpNd);
CreateTree(tmpNd.ChildNodes, drv["menu_code"].ToString());
}
}
{
if (Session["EmpName"] == null)
{
Response.Write("<script>top.location.href='index.aspx';</script>");
return;
}
if (!IsPostBack)
{
//取得所有节点并返回DS
string empID = treeMenu.selectEmpInfoByEmpName(Session["EmpName"].ToString()).Tables[0].Rows[0]["EmpID"].ToString();
DataSet ds = treeMenu.SelectMobuldInfo(Int32.Parse(empID));
DataTable dt = new DataTable();
dt = ds.Tables[0];
AddNodes(dt, null, "0");
}
}
//递归添加节点
private void AddNodes(DataTable dt, TreeNode node, string id)
{
DataRow[] rows = dt.Select("ParentModuleID=" + id); //筛选出属于父节点“node”的子节点集合
foreach (DataRow dr in rows) //循环子节点集合
{
TreeNode nd = new TreeNode();
nd.Value = dr["quanXianID"].ToString(); //存放节点ID
nd.Text = dr["quanXianMingCheng"].ToString(); //设置节点名称
nd.ImageUrl = dr["imageURL"].ToString();//设置节点的图片
nd.NavigateUrl = dr["URl"].ToString();//设置节点的链接
nd.Target = "MainFrame";
this.AddNodes(dt, nd, nd.Value); //递归,添加该节点的子节点
if (node == null || id == "0")
{
TreeView1.Nodes.Add(nd); //添加至根节点
}
else
{
node.ChildNodes.Add(nd);//添加子节点
}
}
}
<div id="divTreeView" style="display:none;"><asp:TreeView
ID="TreeView1" ...
</asp:TreeView>
</div>
</code>
然后,在显示控件的页面加入:<code>
<head>
<script language="javascript">
function showTree() {var elTree = document.getElementById('divTreeView');
elTree.style.display = 'block';
}
</script>
</head>
<body onload="showTree();" >
......
至此问题搞定,再不会出现随机报错的的提示了,唯一不足的是加载有些延迟,不会不明显,可以忍受.
{
if(!IsPostBack)
binderTreeView(null,"0");
}private void binderTreeView(TreeNode treeNode,string ParentIndex)
{
if(dv==null)
{
using(SqlConnection conn=new SqlConnection())
{
string connString="server=.;uid=sa;pwd=;DataBase=db";
conn.ConnectionStrng = connString;
SqlDataAdapter sda=new SqlDataAdapter("select * from Model",conn);
DataSet ds=new DataSet();
sda.fill(ds);
dv=ds.tables[0].defaultView;
}
dv.RowFilter="ParentIndex=" + ParentIndex;
if(dv.count>0)
{
foreach(DataRowView drv in dv)
{
TreeNode node=new TreeNode();
node.Text=drv["Text"].ToString();
node.Value=drv["Value"].ToString();
node.NavigateUrl = drv["URl"].ToString();
if(treeNode==null)
this.TreeView1.Nodes.Add(node);
else
treeNode.ChildNodes.Add(node);
binderTreeView(node,node.Value);
}
}
}
}
string sql = "select * from parts where parentid=" + pid;
DataSet ds = db.ExecuteDataSet(sql, null, CommandType.Text);
// DataSet ds = bll.GetparentID(pid);
if (ds != null && ds.Tables.Count > 0)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
TreeNode chilenode = new TreeNode();
chilenode.Text = dr["partname"].ToString();
chilenode.NavigateUrl = "NotEndCard.aspx?uid=" + dr["partid"].ToString();
chilenode.Target = "right"; //给当前节点添加子节点
AddChild(chilenode, int.Parse(dr["partid"].ToString()));
if (node == null)
{
TreeView1.Nodes.Add(chilenode);
}
else
{
node.ChildNodes.Add(chilenode);
} }
}