| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1367 人关注过本帖
标题:[求助]高手帮忙,如何让mainMenu控件绑定到数据库!
只看楼主 加入收藏
tuablove
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2005-7-11
收藏
 问题点数:0 回复次数:19 
[求助]高手帮忙,如何让mainMenu控件绑定到数据库!

一个menu控件,有静态绑定有动态绑定
样子:
一级菜单(静态):首页|新闻中心|产品中心|帮助中心
二级菜单(动态): |国内新闻|家用电器|
|行业新闻|家用厨具|
| ... | ... |
其中 国内新闻,行业新闻,...是读取 新闻类别表
家用电器,家用厨具,...是读取 产品类别表

这个代码应该怎么写啊 哪个高手给个实例帮下忙,谢谢了

=======================3月28日,更新===================================================
后面我提供了一种方法很笨很笨,也不知道是不是笨,反正我看着都头疼,这两天找资料,泡泡论坛,想到了一个很笨的办法,
现用xmlDataSource作为menu控件的数据源,从而用修改menu.xml的办法来绕圈变相的修改menu控件的菜单项。
因为我的权限不够,不能贴xml代码,只好用个图片,就是
http://bbs.bc-cn.net/viewthread.php?tid=127614 这里面的xml文件,我也找到了方法。
先把更新的贴出来供大家参考。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("Menu.xml"));
XmlNodeList nodeList = xmlDoc.SelectSingleNode("Menu").ChildNodes;//获取bookstore节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("text") == "新闻中心")//如果name属性值为“风云”
{
//xe.SetAttribute("url", "default.aspx");不注释掉不能执行下面的,不知道怎么回事。

////如果下面有子节点在下走
XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.GetAttribute("mytext") == "百度图片")//如果找到
{
xe2.SetAttribute("mytext","新闻");//则修改
break;
}
}
break;
}
}
xmlDoc.Save(Server.MapPath("menu.xml"));//保存


这样就可以更新MENU控件项了,大家还有什么好的方法可以共享下。。。

[此贴子已经被作者于2007-3-28 22:20:49编辑过]

搜索更多相关主题的帖子: 绑定 数据库 控件 mainMenu 
2007-03-27 22:13
HankStar
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2006-10-4
收藏
得分:0 
明天过来试一试

2007-03-27 23:51
程序人
Rank: 2
等 级:新手上路
威 望:3
帖 子:195
专家分:0
注 册:2005-4-5
收藏
得分:0 
这应该是WinForm应用程序吧,这个没有办法,你只有自己写代码,因为要添加控件(每一项)

洒家靠!悟空:我给你说过N遍了,叫你不要说我帅!虽然我承认我很帅!!
2007-03-28 00:18
tuablove
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2005-7-11
收藏
得分:0 
不,是在网页中实现的,不是winform ,我也是想自己写代码,但就是不知道怎么让从数据库读取出来的数据按题目的要求遍历menu的child级!

〖石器时代〗来到现代,不好混啊.... @==)(=======> 为生存而拼搏
2007-03-28 10:06
skyland84
Rank: 2
等 级:新手上路
威 望:4
帖 子:544
专家分:0
注 册:2006-10-9
收藏
得分:0 
不是所有控建都能 数据绑定!这个控建我没有用过!不晓得是否能数据绑定!如果可以的话  那是 可以绑定的!

决定人生~
2007-03-28 10:38
tuablove
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2005-7-11
收藏
得分:0 

呵呵 我这也有MENU控件数据库绑定的例子 就是太麻烦了 现在帖出来给大家看看
最好能找到简洁的办法:
protected string GetPopMenu(string AlternatingImage, int RepeatColumns, bool Flow)
{
if (Cache["PopMenu"] != null)
{
return Cache["PopMenu"].ToString();
}
else
{
DataTable MainMenuTable = new DataTable(), PopMenuTable = new DataTable();
SqlConnection Connection = new SqlConnection(DataProvider.ConnectionString);
// 加载菜单数据
SqlCommand Command = new SqlCommand();
Command.Connection = Connection;
Command.CommandText = "Select * From PopMenu Where Parentid=0 Order By Orderid";
SqlDataAdapter DataAdapter = new SqlDataAdapter();
DataAdapter.SelectCommand = Command;
DataAdapter.Fill(MainMenuTable);
Command.CommandText = "Select * From PopMenu Where Parentid>0 Order By Parentid,Orderid"; ;
DataAdapter.Fill(PopMenuTable);
// 清理数据库连接资源
Connection.Dispose();
Command.Dispose();
DataAdapter.Dispose();
// 获取子菜单数据
int Child = 0;
StringBuilder ChildMenu = new StringBuilder();
ChildMenu.Append("\r\n<div id=\"popmenu\" class=\"menuskin\" style=\"z-index:100\" onmouseover=\"clearhidemenu(); highlightmenu(event,'on')\" onmouseout=\"highlightmenu(event,'off'); dynamichide(event)\"></div>\r\n");
ChildMenu.Append("<script language=\"javascript\" type=\"text/javascript\">\r\n");
ChildMenu.Append("<!--\r\n");
for (int i = 0; i < MainMenuTable.Rows.Count; i++)
{
for (int j = 0; j < PopMenuTable.Rows.Count; j++)
{
if (Convert.ToInt32(PopMenuTable.Rows[j]["Parentid"]) == Convert.ToInt32(MainMenuTable.Rows[i]["Menuid"]))
{
if (Child == 0)
{
ChildMenu.Append("\t" + "linkset[" + MainMenuTable.Rows[i]["Menuid"] + "] = new Array();" + Environment.NewLine);
}
ChildMenu.Append("\t" + "linkset[" + MainMenuTable.Rows[i]["Menuid"] + "][" + Child + "] = \"<div class='menuitems'><a" + (PopMenuTable.Rows[j]["MenuUrl"] != DBNull.Value ? " href='" + PopMenuTable.Rows[j]["MenuUrl"] + "'" : null) + " title='" + PopMenuTable.Rows[j]["MenuAlt"] + "'" + (Convert.ToBoolean(PopMenuTable.Rows[j]["Target"]) ? " target='_blank'" : null) + ">" + PopMenuTable.Rows[j]["MenuName"] + "</a></div>\";" + Environment.NewLine);
Child++;
}
}
if (Child > 0)
{
MainMenuTable.Rows[i]["MenuName"] = "<a onmouseover=\"showmenu(event," + MainMenuTable.Rows[i]["Menuid"] + ",1,false)\" onmouseout=\"delayhidemenu()\"" + (MainMenuTable.Rows[i]["MenuUrl"] != DBNull.Value ? " href=\"" + MainMenuTable.Rows[i]["MenuUrl"] + "\"" : null) + " title=\"" + MainMenuTable.Rows[i]["MenuAlt"] + "\"" + (Convert.ToBoolean(MainMenuTable.Rows[i]["Target"]) ? " target=\"_blank\"" : null) + ">" + MainMenuTable.Rows[i]["MenuName"] + "</a>";
Child = 0;
}
else
{
MainMenuTable.Rows[i]["MenuName"] = "<a" + (MainMenuTable.Rows[i]["MenuUrl"] != DBNull.Value ? " href=\"" + MainMenuTable.Rows[i]["MenuUrl"] + "\"" : null) + " title=\"" + MainMenuTable.Rows[i]["MenuAlt"] + "\"" + (Convert.ToBoolean(MainMenuTable.Rows[i]["Target"]) ? " target=\"_blank\"" : null) + ">" + MainMenuTable.Rows[i]["MenuName"] + "</a>";
}
}
ChildMenu.Append("\t" + "jsdone = true;" + Environment.NewLine);
ChildMenu.Append("// -->\r\n");
ChildMenu.Append("</script>" + Environment.NewLine);
// 获取主菜单数据
StringBuilder MainMenu = new StringBuilder();
MainMenu.Append("<script language=\"javascript\" type=\"text/javascript\" src=\"JScript/PopMenu.js\"></script>" + Environment.NewLine);
if (Flow)
{
MainMenu.Append("<span id=\"PopMenuList\">" + Environment.NewLine);
if (AlternatingImage != null && AlternatingImage != "")
{
AlternatingImage = "\t<span><img alt=\"\" src=\"" + AlternatingImage + "\" /></span>" + Environment.NewLine;
}
for (int i = 0; i < MainMenuTable.Rows.Count - 1; i++)
{
MainMenu.Append("\t<span>" + MainMenuTable.Rows[i]["MenuName"] + "</span>" + Environment.NewLine);
if ((i + 1) % RepeatColumns == 0)
{
MainMenu.Append("\t<br />" + Environment.NewLine);
}
else
{
MainMenu.Append(AlternatingImage);
}
}

// Edit By AlphaC 2006-3-21 18:20
//MainMenu.Append("\t<span>" + MainMenuTable.Rows[MainMenuTable.Rows.Count - 1]["MenuName"] + "</span>" + Environment.NewLine);

if(MainMenuTable.Rows.Count > 0)
MainMenu.Append("\t<span>" + MainMenuTable.Rows[MainMenuTable.Rows.Count - 1]["MenuName"] + "</span>" + Environment.NewLine);

MainMenu.Append("</span>" + Environment.NewLine);
}
else
{
MainMenu.Append("<table id=\"PopMenuList\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">" + Environment.NewLine);
MainMenu.Append("\t<tr>" + Environment.NewLine);
if (AlternatingImage != null && AlternatingImage != "")
{
AlternatingImage = "\t\t<td align=\"center\"><img alt=\"\" src=\"" + AlternatingImage + "\" /></td>" + Environment.NewLine;
}
for (int i = 0; i < MainMenuTable.Rows.Count - 1; i++)
{
MainMenu.Append("\t\t<td align=\"center\">" + MainMenuTable.Rows[i]["MenuName"] + "</td>" + Environment.NewLine);
if ((i + 1) % RepeatColumns == 0)
{
MainMenu.Append("\t</tr>" + Environment.NewLine);
MainMenu.Append("\t<tr>" + Environment.NewLine);
}
else
{
MainMenu.Append(AlternatingImage);
}
}
MainMenu.Append("\t\t<td align=\"center\">" + MainMenuTable.Rows[MainMenuTable.Rows.Count - 1]["MenuName"] + "</td>" + Environment.NewLine);
for (int i = 0; i < MainMenuTable.Rows.Count % RepeatColumns; i++)
{
MainMenu.Append(AlternatingImage);
MainMenu.Append("\t\t<td align=\"center\">&nbsp;</td>" + Environment.NewLine);
}
MainMenu.Append("\t</tr>" + Environment.NewLine);
MainMenu.Append("</table>" + Environment.NewLine);
}
// 建立缓存
Cache["PopMenu"] = MainMenu.ToString() + ChildMenu.ToString();
return MainMenu.ToString() + ChildMenu.ToString();
}
}


〖石器时代〗来到现代,不好混啊.... @==)(=======> 为生存而拼搏
2007-03-28 11:35
HankStar
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2006-10-4
收藏
得分:0 
好像有点麻烦的样子~

我去按照自己的思路去写一下看看~

2007-03-28 12:19
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
我想知道你的数据库是怎么设计的...

飘过~~
2007-03-28 12:51
tuablove
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2005-7-11
收藏
得分:0 

数据库的设计
两个表:newsStor(newsStor_id,newsStor_name)
productStor(ProStor_id,ProStor_name)


〖石器时代〗来到现代,不好混啊.... @==)(=======> 为生存而拼搏
2007-03-28 16:12
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 

这个问题好像和winform或者webform没有关系呀
不管哪个form 绑上去都是用相同的方式
虽然我也不知道怎么绑


2007-03-28 16:15
快速回复:[求助]高手帮忙,如何让mainMenu控件绑定到数据库!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026744 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved