现有City表 Customer表 两个表City表设计为:
CityId City FatherCityId
1 中国 0
2 江苏 1
3 南京 2
4 苏州 2注:此表是无限级分类的Customer表设计是:
CustomerId Customer CityId
1 XXX 3
2 XXX 3
3 XXX 4
4 XXX 4
因已完成C/S系统已经用这样子的表,所以表结构无法改变,我现在想在B/S中实现两个表关联的树形菜单,请大家帮忙看看有什么办法.
(本人新手,请多多指教)求测试成功的完整代码!
CityId City FatherCityId
1 中国 0
2 江苏 1
3 南京 2
4 苏州 2注:此表是无限级分类的Customer表设计是:
CustomerId Customer CityId
1 XXX 3
2 XXX 3
3 XXX 4
4 XXX 4
因已完成C/S系统已经用这样子的表,所以表结构无法改变,我现在想在B/S中实现两个表关联的树形菜单,请大家帮忙看看有什么办法.
(本人新手,请多多指教)求测试成功的完整代码!
解决方案 »
- 怎么解决只可以查看页面但不能进行操作的问题
- MVC3.0+SQL语句
- ASP.NET获取客户端的IP地址
- 关于从数据库中下载上传的文件 问题
- DataGrid 实践丢失怎么解决啊
- 在.net中使用eWebedit,怎么点击按钮的事件不执行阿?
- 如何让treeview的节点在第一次装载时没有选中任何节点?(在线等)
- 推荐几本asp.net(C#)的书!!
- #################满分求高手#############################满分求高手满分求高手满分求高手满分求高手满分求高手满分求高手满分求高手满
- 如何让主窗体纵向滚动, menu 控件 也不随之滚动,menu 是动态显示的
- 简单的插入问题
- iframe中的gridview的onselectedindexchanged事件如何刷新父页面?
TreeNode root = new TreeNode();
root.Text = "中国城市";
先对城市递归
GetChildren(root);private void GetChildren(TreeNode node)
{
TreeNode node = null;
foreach (DataRow row in CityTable.Rows)
{
node = new TreeNode();
if (row[FatherCityId].ToString().Trim() == node.value)
{
node.value = row[City].ToString();
node.Tag = row[CityId].ToString();
root.nodes.add(node);
}
foreach (DataRow cusRow in CustomerTable)
{
TreeNode customers = null;
if (cusRow[CityId].ToString().Trim() == node.Tag)
{
customers = new TreeNode();
customers.value = cusRow[Customer].ToString();
}
node.nodes.add(customers);
}
GetChildren(node);
}
}直接写的,没测试,可能有错,请原谅!
http://www.microsoft.com/china/msdn/archives/library/workshop/webcontrols/overview/treeview.asphttp://www.microsoft.com/china/msdn/archives/library/dnaspp/html/aspnet-usingtreeviewiewebcontrol.asp
http://www.microsoft.com/china/community/Column/30.mspx
private void CreateData()
{
CityTable.Columns.Add(new DataColumn("CityId"));
CityTable.Columns.Add(new DataColumn("City"));
CityTable.Columns.Add(new DataColumn("FatherCityId")); DataRow row = null; row = CityTable.NewRow();
row["CityId"] = "1";
row["City"] = "北京";
row["FatherCityId"] = "0";
CityTable.Rows.Add(row); row = CityTable.NewRow();
row["CityId"] = "2";
row["City"] = "江苏";
row["FatherCityId"] = "1";
CityTable.Rows.Add(row); row = CityTable.NewRow();
row["CityId"] = "3";
row["City"] = "南京";
row["FatherCityId"] = "2";
CityTable.Rows.Add(row); row = CityTable.NewRow();
row["CityId"] = "4";
row["City"] = "苏州";
row["FatherCityId"] = "2";
CityTable.Rows.Add(row); //CustomerTalbe
CustomerTable.Columns.Add(new DataColumn("CustomerId"));
CustomerTable.Columns.Add(new DataColumn("Customer"));
CustomerTable.Columns.Add(new DataColumn("CityId")); DataRow csRow = null; csRow = CustomerTable.NewRow();
csRow["CustomerId"] = "1";
csRow["Customer"] = "张一";
csRow["CityId"] = "3";
CustomerTable.Rows.Add(csRow); csRow = CustomerTable.NewRow();
csRow["CustomerId"] = "2";
csRow["Customer"] = "江二";
csRow["CityId"] = "3";
CustomerTable.Rows.Add(csRow); csRow = CustomerTable.NewRow();
csRow["CustomerId"] = "3";
csRow["Customer"] = "王三";
csRow["CityId"] = "4";
CustomerTable.Rows.Add(csRow); csRow = CustomerTable.NewRow();
csRow["CustomerId"] = "4";
csRow["Customer"] = "赵四";
csRow["CityId"] = "4";
CustomerTable.Rows.Add(csRow); TreeNode root = new TreeNode();
CityTable.DefaultView.RowFilter = "FatherCityId=0";
DataRowView drv = CityTable.DefaultView[0] as DataRowView;
root.Text = drv["City"].ToString();
root.ID = drv["CityId"].ToString();
root.NodeData = drv["FatherCityId"].ToString();
GetChildren(root); TreeView1.Nodes.Add(root);
}这是数据表!模拟数据库取出的数据!
{
TreeNode cityNode = null;
foreach (DataRow row in CityTable.Rows)
{
cityNode = new TreeNode();
if (row["FatherCityId"].ToString().Trim() == node.ID)
{
cityNode.Text = row["City"].ToString();
cityNode.ID = row["CityId"].ToString();
cityNode.NodeData = node.ID;
node.Nodes.Add(cityNode); foreach (DataRow cusRow in CustomerTable.Rows)
{
TreeNode customers = null;
if (cusRow["CityId"].ToString().Trim() == cityNode.ID)
{
customers = new TreeNode();
customers.Text = cusRow["Customer"].ToString();
cityNode.Nodes.Add(customers);
}
}
GetChildren(cityNode);
}
}
}
http://blog.csdn.net/cho__cho/archive/2006/10/11/1330121.aspx
我也要一份
{
DataSet dst = GetTreeViewData();
TreeView1.ShowCheckBoxes = TreeNodeTypes.All;
foreach (DataRow masterRow in dst.Tables["province"].Rows)
{
TreeNode masterNode = new TreeNode((string)masterRow["province"]);
TreeView1.Nodes.Add(masterNode);
foreach (DataRow childRow in masterRow.GetChildRows("Children"))
{
TreeNode childNode =new TreeNode((string)childRow["city"]);
masterNode.Expanded = false;
masterNode.ChildNodes.Add(childNode);
}
}
} private DataSet GetTreeViewData()
{
string constring = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
SqlConnection con = new SqlConnection(constring);
SqlDataAdapter daprovince = new SqlDataAdapter("SELECT * FROM province", con);
SqlDataAdapter dacity = new SqlDataAdapter("SELECT * FROM city", con);
DataSet ds = new DataSet();
daprovince.Fill(ds, "province");
dacity.Fill(ds, "city");
ds.Relations.Add("Children", ds.Tables["province"].Columns["provinceid"], ds.Tables["city"].Columns["father"]);
return ds;
}
#endregion #region 递归绑定同一个表数据
private void InitTree()
{
DataTable dt = GetTreeViewTable();
DataView dv = new DataView(dt);
dv.RowFilter = "ParentID=0";
TreeView1.ShowCheckBoxes = TreeNodeTypes.All;
foreach (DataRowView drv in dv)
{
TreeNode node = new TreeNode();
node.Text = drv["text"].ToString();
node.Value = drv["ID"].ToString();
node.Expanded = false;
TreeView1.Nodes.Add(node);
AddReplies(dt,node);
}
} private DataTable GetTreeViewTable()
{
string constring = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
SqlConnection con = new SqlConnection(constring);
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM treeview", con);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
} private void AddReplies(DataTable dt, TreeNode node)
{
DataView dv = new DataView(dt);
dv.RowFilter = "ParentID='" + node.Value + "'";
foreach (DataRowView row in dv)
{
TreeNode replyNode = new TreeNode();
replyNode.Text = row["text"].ToString();
replyNode.Value = row["ID"].ToString();
replyNode.Expanded = false;
node.ChildNodes.Add(replyNode);
AddReplies(dt,replyNode);
}
}