目录树至少有四级,初始化从数据库中读取所有数据动态生成TreeView目录,然后可以根据查询条件生成相应的树型结构,并指定节点相应的链接页面.
现在存在的问题是,生成出来的节点查询后无法动态生成相应链接,而且初始化生成的节点链接的ID值都不正确.(代码如下)
//递归绑定同一个表数据
private void InitTree()
{
DataTable dt = GetTreeViewTable();
DataView dv = new DataView(dt); string Gvalue, bvalue, dvalue, hvalue;
Gvalue = DwGdj.SelectedValue.ToString();
bvalue = DwBdz.SelectedValue.ToString();
dvalue = Dwdy.SelectedValue.ToString();
hvalue = Dwhy.SelectedValue.ToString(); if (Gvalue != "") { dv.RowFilter = "SubBureauid='" + Gvalue + "'"; }
if (bvalue != "") { dv.RowFilter = "tsid='" + bvalue + "'"; }
if (dvalue != "") { dv.RowFilter = "vrid='" + dvalue + "'"; }
if (hvalue != "") { dv.RowFilter = "tradeid='" + hvalue + "'"; }
if (Gvalue == "" & bvalue == "" & dvalue == "" & hvalue == "") { dv.RowFilter = "[Parent]='0'"; } string sUrl = string.Empty;
foreach (DataRowView drv in dv)
{
TreeNode node = new TreeNode();
if (WasteGroup.Checked == true)
{
node.Text = drv["WGName"].ToString();
node.Value = drv["WGid"].ToString();
node.ToolTip = drv["WGName"].ToString();
}
if(TotalGroup.Checked == true)
{
node.Text = drv["SGName"].ToString();
node.Value = drv["SGid"].ToString();
node.ToolTip = drv["SGName"].ToString();
}
node.Expanded = true;
TreeGroup.Nodes.Add(node);
AddReplies(dt,node);
}
}
//获取查询条件并将结果赋给DataTable
private DataTable GetTreeViewTable()
{
string Gvalue, bvalue, dvalue, hvalue;
Gvalue = DwGdj.SelectedValue.ToString();
bvalue = DwBdz.SelectedValue.ToString();
dvalue = Dwdy.SelectedValue.ToString();
hvalue = Dwhy.SelectedValue.ToString(); string TableName="";
if (WasteGroup.Checked == true) { TableName = "WasteGroup"; }else{ TableName = "StatisticGroup"; }
SqlConnection strconn = Conn.CreateConnection();
strconn.Open();
string sql = "select * from " + TableName +" where 1=1 ";
if (Gvalue != "") { sql = sql + "And SubBureauid =" + Gvalue; }
if (bvalue != "") { sql = sql + "And tsid =" + bvalue; }
if (dvalue != "") { sql = sql + "And vrid =" + dvalue; }
if (hvalue != "") { sql = sql + "And tradeid =" + hvalue; } SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(sql, strconn);
DataTable dt = new DataTable();
da.Fill(dt);
strconn.Close();
return dt;
} //生成目录树
private void AddReplies(DataTable dt, TreeNode node)
{
string sUrl = string.Empty;
DataView dv = new DataView(dt);
dv.RowFilter = "[Parent]='"+node.Value+"'";
foreach (DataRowView row in dv)
{
TreeNode replyNode = new TreeNode();
if (WasteGroup.Checked == true)
{
replyNode.Text = row["WGName"].ToString();
replyNode.Value = row["WGid"].ToString();
replyNode.ToolTip = row["WGName"].ToString();
string wgid = row["wgid"].ToString();
sUrl = "GroupView.aspx?id=" + row["WGid"].ToString() + "&Name=" + row["WGName"].ToString() + "&tid=" + "1";
}
else
{
replyNode.Text = row["SGName"].ToString();
replyNode.Value = row["SGid"].ToString();
replyNode.ToolTip = row["SGName"].ToString();
sUrl = "GroupView.aspx?id=" + row["SGid"].ToString() + "&Name=" + row["SGName"].ToString() + "&tid=" +"0";
}
replyNode.Expanded = true;
node.NavigateUrl = sUrl;
node.Target = "mainFrame";
node.ChildNodes.Add(replyNode);
if (node.ChildNodes.Count > 0)
{
for (int j = 0; j < node.ChildNodes.Count; j++)
{
node.ChildNodes[j].NavigateUrl = sUrl;
node.ChildNodes[j].Target = "mainFrame";
}
}
AddReplies(dt,replyNode);
}
}
现在存在的问题是,生成出来的节点查询后无法动态生成相应链接,而且初始化生成的节点链接的ID值都不正确.(代码如下)
//递归绑定同一个表数据
private void InitTree()
{
DataTable dt = GetTreeViewTable();
DataView dv = new DataView(dt); string Gvalue, bvalue, dvalue, hvalue;
Gvalue = DwGdj.SelectedValue.ToString();
bvalue = DwBdz.SelectedValue.ToString();
dvalue = Dwdy.SelectedValue.ToString();
hvalue = Dwhy.SelectedValue.ToString(); if (Gvalue != "") { dv.RowFilter = "SubBureauid='" + Gvalue + "'"; }
if (bvalue != "") { dv.RowFilter = "tsid='" + bvalue + "'"; }
if (dvalue != "") { dv.RowFilter = "vrid='" + dvalue + "'"; }
if (hvalue != "") { dv.RowFilter = "tradeid='" + hvalue + "'"; }
if (Gvalue == "" & bvalue == "" & dvalue == "" & hvalue == "") { dv.RowFilter = "[Parent]='0'"; } string sUrl = string.Empty;
foreach (DataRowView drv in dv)
{
TreeNode node = new TreeNode();
if (WasteGroup.Checked == true)
{
node.Text = drv["WGName"].ToString();
node.Value = drv["WGid"].ToString();
node.ToolTip = drv["WGName"].ToString();
}
if(TotalGroup.Checked == true)
{
node.Text = drv["SGName"].ToString();
node.Value = drv["SGid"].ToString();
node.ToolTip = drv["SGName"].ToString();
}
node.Expanded = true;
TreeGroup.Nodes.Add(node);
AddReplies(dt,node);
}
}
//获取查询条件并将结果赋给DataTable
private DataTable GetTreeViewTable()
{
string Gvalue, bvalue, dvalue, hvalue;
Gvalue = DwGdj.SelectedValue.ToString();
bvalue = DwBdz.SelectedValue.ToString();
dvalue = Dwdy.SelectedValue.ToString();
hvalue = Dwhy.SelectedValue.ToString(); string TableName="";
if (WasteGroup.Checked == true) { TableName = "WasteGroup"; }else{ TableName = "StatisticGroup"; }
SqlConnection strconn = Conn.CreateConnection();
strconn.Open();
string sql = "select * from " + TableName +" where 1=1 ";
if (Gvalue != "") { sql = sql + "And SubBureauid =" + Gvalue; }
if (bvalue != "") { sql = sql + "And tsid =" + bvalue; }
if (dvalue != "") { sql = sql + "And vrid =" + dvalue; }
if (hvalue != "") { sql = sql + "And tradeid =" + hvalue; } SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(sql, strconn);
DataTable dt = new DataTable();
da.Fill(dt);
strconn.Close();
return dt;
} //生成目录树
private void AddReplies(DataTable dt, TreeNode node)
{
string sUrl = string.Empty;
DataView dv = new DataView(dt);
dv.RowFilter = "[Parent]='"+node.Value+"'";
foreach (DataRowView row in dv)
{
TreeNode replyNode = new TreeNode();
if (WasteGroup.Checked == true)
{
replyNode.Text = row["WGName"].ToString();
replyNode.Value = row["WGid"].ToString();
replyNode.ToolTip = row["WGName"].ToString();
string wgid = row["wgid"].ToString();
sUrl = "GroupView.aspx?id=" + row["WGid"].ToString() + "&Name=" + row["WGName"].ToString() + "&tid=" + "1";
}
else
{
replyNode.Text = row["SGName"].ToString();
replyNode.Value = row["SGid"].ToString();
replyNode.ToolTip = row["SGName"].ToString();
sUrl = "GroupView.aspx?id=" + row["SGid"].ToString() + "&Name=" + row["SGName"].ToString() + "&tid=" +"0";
}
replyNode.Expanded = true;
node.NavigateUrl = sUrl;
node.Target = "mainFrame";
node.ChildNodes.Add(replyNode);
if (node.ChildNodes.Count > 0)
{
for (int j = 0; j < node.ChildNodes.Count; j++)
{
node.ChildNodes[j].NavigateUrl = sUrl;
node.ChildNodes[j].Target = "mainFrame";
}
}
AddReplies(dt,replyNode);
}
}
解决方案 »
- 请问一个为用户控件设置初始值的问题.
- 关于Datagrid动态邦定日历控件的问题
- 求“项目研究进展中期报告”!!
- css高级定位图片中的某个图片
- 在VS中,如何用TreeView现实数据
- 在2005的dataview中象2003中datagrid的e.Item.Cells[4].Text该如何写呢
- cookie清除问题。。。。高人指点啊
- 送分求救!谁能告诉我哪里可以单独买一个MySQL数据库空间(不买虚拟主机),要求能从外部连接的!~马上给分~
- showModalDialog网页对话框关闭时刷新父窗口时,弹出这样的提示框"请重新发送消息,无法刷新网页"
- 怎么提交null到数据库?
- Treeview中,在SelectedNodeChanged事件中取值问题?
- 求TREEVIEW连接数据库的例子
帮你顶一下,明天再看。