DropDownList动态绑定数据库表,实现目录树

百思软件工作室 2009-04-07 11:02:20
DropDownList动态绑定数据库表,实现目录树
如:表a中有三个字段:id name parentid
这个该用aspnet如何实现?
...全文
278 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ws_hgo 2009-04-07
  • 打赏
  • 举报
回复
http://blog.csdn.net/ws_hgo/archive/2009/01/21/3846843.aspx
ws_hgo 2009-04-07
  • 打赏
  • 举报
回复
static DataColumn column = new DataColumn();
static DataTable table = new DataTable();

static DataRow MyRow;
public static DataTable GetCategoryTree(WebInfoBase info)
{
DataTable dt = info.List(_DefaultDB, "", "[ID],[Title],[ParentID],[ChildNum],[Depth],[OrderNo]", "&version=", "[ID] ASC");

if (table.Rows.Count > 0)
{
table.Columns.Clear();
table.Rows.Clear();
}
CreateDataTable();
GetTree(dt, "0", 0);
return table;
}
public static void GetTree(DataTable dt, string pid, int blank)
{
string str = " ";
DataView dv = new DataView(dt);
dv.RowFilter = "ParentID = " + pid;
if (blank > 0)
{
string s = "";
if (blank == 1)
{
str = "├";
}
for (int i = 2; i <= blank; i++)
{
s = s + " | "+" "+" - ";
}
str = s + "├";
}

foreach (DataRowView drv in dv)
{
string id = drv["ID"].ToString();
string Title = drv["Title"].ToString();
string OrderNo = drv["OrderNo"].ToString();
string ParentID = drv["ParentID"].ToString();
string Depth = drv["Depth"].ToString();
string ChildNum = drv["ChildNum"].ToString();

MyRow = table.NewRow();
MyRow["ID"] = int.Parse(id);
MyRow["Title"] = str + Title;
MyRow["OrderNo"] = int.Parse(OrderNo);
MyRow["ParentID"] = int.Parse(ParentID);
MyRow["Depth"] = int.Parse(Depth);
MyRow["ChildNum"] = int.Parse(ChildNum);
table.Rows.Add(MyRow);

int n = int.Parse(Depth);
//if (n <= 1)
//{
n++;
//}
GetTree(dt, id, n);
}
}
public static void CreateDataTable()
{
table.Columns.Clear();
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "ID";
table.Columns.Add(column);

column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "ParentID";
table.Columns.Add(column);

column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "Title";
table.Columns.Add(column);

column = new DataColumn();
column.DataType = Type.GetType("System.Int32");
column.ColumnName = "ChildNum";
table.Columns.Add(column);

column = new DataColumn();
column.DataType = Type.GetType("System.Int32");
column.ColumnName = "Depth";
table.Columns.Add(column);

column = new DataColumn();
column.DataType = Type.GetType("System.Int32");
column.ColumnName = "OrderNo";
table.Columns.Add(column);
//table.Columns.Clear();

}
jdbcodbc 2009-04-07
  • 打赏
  • 举报
回复
private void FatherNodeBinder()
{
TreeView1.Nodes.Clear();
DataTable TreeFather = UserInfoManager.MasterPageTreeView(0);
foreach (DataRow dr in TreeFather.Rows)
{
int MenId = Convert.ToInt32(dr["NodeId"].ToString());
string MenName = dr["DisplayName"].ToString();
TreeNode FatherTreeNode = new TreeNode();
FatherTreeNode.Value = MenId.ToString();
FatherTreeNode.Text = MenName;
FatherTreeNode.ImageUrl = "images/menuclose.gif";
TreeViewBind(MenId, FatherTreeNode);
TreeView1.Nodes.Add(FatherTreeNode);
}
}
public void TreeViewBind(int NodeId,TreeNode TwoTreeNode)
{
DataTable TreeFather = UserInfoManager.MasterPageTreeView(NodeId);
foreach (DataRow dr in TreeFather.Rows)
{
int TMenId = Convert.ToInt32(dr["NodeId"].ToString());
string TMenName = dr["DisplayName"].ToString();
string TMenUrl =ResolveUrl(dr ["NodeURL"].ToString());
TreeNode TN = new TreeNode();
TN.Value = TMenId.ToString();
TN.Text = TMenName;
TN.NavigateUrl = TMenUrl;
TN.ImageUrl = "images/CloseTree.gif";
TreeViewBind(TMenId, TN);
TwoTreeNode.ChildNodes.Add(TN);
}
}


刚网卡了
jdbcodbc 2009-04-07
  • 打赏
  • 举报
回复
private void FatherNodeBinder()
{
TreeView1.Nodes.Clear();
DataTable TreeFather = UserInfoManager.MasterPageTreeView(0);
foreach (DataRow dr in TreeFather.Rows)
{
int MenId = Convert.ToInt32(dr["NodeId"].ToString());
string MenName = dr["DisplayName"].ToString();
TreeNode FatherTreeNode = new TreeNode();
FatherTreeNode.Value = MenId.ToString();
FatherTreeNode.Text = MenName;
FatherTreeNode.ImageUrl = "images/menuclose.gif";
TreeViewBind(MenId, FatherTreeNode);
TreeView1.Nodes.Add(FatherTreeNode);
}
}
DropDownList不会
treeview给你一个吧
public void TreeViewBind(int NodeId,TreeNode TwoTreeNode)
{
DataTable TreeFather = UserInfoManager.MasterPageTreeView(NodeId);
foreach (DataRow dr in TreeFather.Rows)
{
int TMenId = Convert.ToInt32(dr["NodeId"].ToString());
string TMenName = dr["DisplayName"].ToString();
string TMenUrl =ResolveUrl(dr ["NodeURL"].ToString());
TreeNode TN = new TreeNode();
TN.Value = TMenId.ToString();
TN.Text = TMenName;
TN.NavigateUrl = TMenUrl;
TN.ImageUrl = "images/CloseTree.gif";
TreeViewBind(TMenId, TN);
TwoTreeNode.ChildNodes.Add(TN);
}
}
sbshu 2009-04-07
  • 打赏
  • 举报
回复
想一步到位是无法实现的

可以写一个递归来处理,对下级进行缩进处理
但是这种目录树不具备折叠与展开功能,如果想要折叠与展开功能,建议楼主用TreeView做,绑定同样要用到递归
cyz9977 2009-04-07
  • 打赏
  • 举报
回复
DropDownList?目录树 ?

用treeview吧

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧