表中有两列—>Subject和Parent.Parent列中记录四条数据—>A A B B
Subject列中记录斯四条数据—>1234我想要的效果是:效果是:
A
|—1
|
—2
B
|—3
|
—4应该怎样实现?希望最好能给出代码。
谢谢!!!
Subject列中记录斯四条数据—>1234我想要的效果是:效果是:
A
|—1
|
—2
B
|—3
|
—4应该怎样实现?希望最好能给出代码。
谢谢!!!
调试欢乐多
表数据:
<asp:GridView ID="gv" runat="server"></asp:GridView>
TreeView:
<asp:TreeView ID="tv" runat="server"></asp:TreeView>private DataView GetDataSource()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Subject", typeof(String)));
dt.Columns.Add(new DataColumn("Parent", typeof(String))); DataRow dr = dt.NewRow();
dr[0] = "A";
dr[1] = "1";
dt.Rows.Add(dr); dr = dt.NewRow();
dr[0] = "A";
dr[1] = "2";
dt.Rows.Add(dr); dr = dt.NewRow();
dr[0] = "B";
dr[1] = "3";
dt.Rows.Add(dr); dr = dt.NewRow();
dr[0] = "B";
dr[1] = "4";
dt.Rows.Add(dr); dr = dt.NewRow();
dr[0] = "C";
dr[1] = "5";
dt.Rows.Add(dr); dr = dt.NewRow();
dr[0] = "D";
dr[1] = "6";
dt.Rows.Add(dr); dr = dt.NewRow();
dr[0] = "D";
dr[1] = "7";
dt.Rows.Add(dr); dr = dt.NewRow();
dr[0] = "D";
dr[1] = "8";
dt.Rows.Add(dr); return dt.DefaultView;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataView dv = GetDataSource(); gv.DataSource = dv;
gv.DataBind(); Dictionary<string, string> dic = new Dictionary<string, string>(); for (int i = 0; i < dv.Table.Rows.Count; i++)
{
if (dic.ContainsKey(dv.Table.Rows[i][0].ToString()))
{
dic[dv.Table.Rows[i][0].ToString()] = string.Format("{0},{1}", dic[dv.Table.Rows[i][0].ToString()], dv.Table.Rows[i][1].ToString());
}
else
{
dic.Add(dv.Table.Rows[i][0].ToString(), dv.Table.Rows[i][1].ToString());
}
} TreeNode tn, tnChild;
foreach (KeyValuePair<string, string> kvp in dic)
{
tn = new TreeNode(kvp.Key); string[] array = kvp.Value.Split(','); for (int i = 0; i < array.Length; i++)
{
tnChild = new TreeNode(array[i]);
tn.ChildNodes.Add(tnChild);
} tv.Nodes.Add(tn);
}
}
}
Dictionary<string, string> dic = new Dictionary<string, string>(); 这个提示没有引用命名空间,在网上查了下没弄懂咋回事,水平有限 希望指点下!
/// <summary>
/// treeview生成
/// </summary>
public void CreateTree(string ParentID, TreeNode pNode)
{ string sql = "";
if (ParentID.Equals(""))
{
sql = "select * from traditionalcode where LENGTH(tra_id)=2 ";
}
else
{
sql = "select * from traditionalcode where substring(tra_id,1,2)='" + ParentID + "' and LENGTH(tra_id)>2";
}
DataSet ds = new DataSet();
//ds = MSQL.RunProc(sql, ds);
ds = MySqlDBUtil.ExecuteQuery(sql);
DataView dvTree = new DataView();
dvTree = ds.Tables[0].DefaultView;
dvTree.Sort = "tra_id";
TreeNode funNode = new TreeNode();
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null) //处理主节点
{ Node.ToolTip = Row["tra_id"].ToString();
Node.Value = Row["tra_id"].ToString();
Node.Text = Row["tra_name"].ToString();
// Node.ShowCheckBox = false;
// Node.Checked = false;
tvTraditional.Nodes.Add(Node); //加入
CreateTree(Row["tra_id"].ToString(), Node); //递归 }
else //处理子节点
{ Node.ToolTip = Row["tra_id"].ToString();
Node.Target = Row["tra_id"].ToString();
Node.Value = Row["tra_id"].ToString();
Node.Text = Row["tra_name"].ToString();
// Node.ShowCheckBox = true;
// Node.Checked = false;
pNode.ChildNodes.Add(Node);
CreateTree(Row["tra_id"].ToString(), Node); }
}
}
private void CreateTreeView()
{
if(Session["userid"]!=null)
{
int RoleID = usersBll.GetRoleIDByUserid(Session["userid"].ToString());
DataTable dt = new DataTable();
dt = MenuBLL.GetTreeMenu(RoleID); CreateTreeViewRecursive(TreeView1.Nodes, dt, 0);
} } private void CreateTreeViewRecursive(TreeNodeCollection nodes, DataTable dataSource, int parentId)
{
string fliter = String.Format("ParentId={0}", parentId);
DataRow[] drArr = dataSource.Select(fliter);
TreeNode node;
foreach (DataRow dr in drArr)
{
//
node = new TreeNode();
nodes.Add(node);
node.Text = (string)dr["NodeName"];
if ((int)dr["ParentId"] == 1 || (int)dr["ParentId"] == 0)
{
node.SelectAction = TreeNodeSelectAction.Expand;
}
else
{
node.NavigateUrl = (string)dr["Url"];
node.SelectAction = TreeNodeSelectAction.SelectExpand;
}
// 设置其他属性
// ... // 递归创建子节点
CreateTreeViewRecursive(node.ChildNodes, dataSource, (int)dr["NodeId"]); // 移除已添加行,提高性能
dataSource.Rows.Remove(dr);
}
}