vs2005 menu 无限循环 自动绑定下拉菜单内容
2014-05-05 12:02
344 查看
前年写了一遍 Vs 2005 treeview无限循环的文章http://blog.csdn.net/SpriteNet/archive/2008/04/02/2245363.aspx,最后提到说稍微修改可以用到 menu 控件上,最近项目用到了menu的绑定数据库,思路和treeview一样,也是递归的办法,具体如何实现,咱们下次再说,先吃饭,占个地方。。。。。。。(*^__^*)
嘻嘻……
///////////////////////////
回来了,咱们继续
先说表结构吧,表结构其实和《Vs 2005 treeview无限循环》的结构是一样的,不过就是多了一个记录url的字段,大家可以看看《Vs 2005 treeview无限循环》的内容。
以下是相关代码:
1.皮肤样式
<%--Men
adc9
u--%>
<asp:Menu runat="server" SkinID="MgeShow"
MaximumDynamicDisplayLevels="3" Orientation="Horizontal" StaticDisplayLevels="2"
BackColor="#396395" Font-Overline="False" ForeColor="#E0E0E0" Font-Size="30pt" StaticSubMenuIndent="" StaticEnableDefaultPopOutImage="False" Font-Bold="True">
<StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="4px"/>
<DynamicHoverStyle BackColor="#7AB0EF" ForeColor="#ffffff" />
<DynamicMenuStyle BackColor="#4982C5" BorderColor="#396395" BorderStyle="Outset" BorderWidth="1px" ForeColor="#FF7E00"/><%--Height="30px" HorizontalPadding="10px"--%>
<StaticSelectedStyle BackColor="#396395" ForeColor="#E0E0E0" /> <%--无二级菜单时的一级样式--%>
<DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="4px" Font-Strikeout="False" Height="24px" />
<StaticHoverStyle BackColor="#4982C5" ForeColor="#ffffff" /> <%--导航第一级鼠标放上背景颜色和字体颜色--%>
</asp:Menu>
2.cs
protected void initMenu()
{
DataTable dt = GetViewTable();
DataView dv = new DataView(dt);
dv.RowFilter = "QB_Fid='0'";
foreach (DataRowView drv in dv)
{
MenuItem node = new MenuItem();
node.Text = drv["QB_Name"].ToString();
node.Value = drv["QB_Id"].ToString();
node.NavigateUrl = drv["QB_Url"].ToString().Trim();
Menu1.Items.Add(node);
AddNodes(dt, node);
}
}
protected DataTable GetViewTable()
{
string strConn = System.Configuration.ConfigurationManager.AppSettings["strconnC"];
SqlConnection myConn = new SqlConnection(strConn);
string strSql = "select * from QX_Base where QB_JY=0 order by QB_Fid,QB_Sort";
SqlDataAdapter myDa = new SqlDataAdapter(strSql, myConn);
DataTable dt = new DataTable();
myDa.Fill(dt);
return dt;
}
/// <summary>
/// 子节点添加
/// </summary>
/// <param name="dt">数据表</param>
/// <param name="pNode"></param>
protected void AddNodes(DataTable dt, MenuItem pNode)
{
DataView dv = new DataView(dt);
dv.RowFilter = "QB_Fid =" + pNode.Value ;
foreach (DataRowView drv in dv)
{
MenuItem menuNode = new MenuItem();
menuNode.Text = drv["QB_Name"].ToString();
menuNode.NavigateUrl = drv["QB_Url"].ToString().Trim();
menuNode.Value = drv["QB_Id"].ToString();
pNode.ChildItems.Add(menuNode);
//loop循环
AddNodes(dt, menuNode);
}
}
嘻嘻……
///////////////////////////
回来了,咱们继续
先说表结构吧,表结构其实和《Vs 2005 treeview无限循环》的结构是一样的,不过就是多了一个记录url的字段,大家可以看看《Vs 2005 treeview无限循环》的内容。
以下是相关代码:
1.皮肤样式
<%--Men
adc9
u--%>
<asp:Menu runat="server" SkinID="MgeShow"
MaximumDynamicDisplayLevels="3" Orientation="Horizontal" StaticDisplayLevels="2"
BackColor="#396395" Font-Overline="False" ForeColor="#E0E0E0" Font-Size="30pt" StaticSubMenuIndent="" StaticEnableDefaultPopOutImage="False" Font-Bold="True">
<StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="4px"/>
<DynamicHoverStyle BackColor="#7AB0EF" ForeColor="#ffffff" />
<DynamicMenuStyle BackColor="#4982C5" BorderColor="#396395" BorderStyle="Outset" BorderWidth="1px" ForeColor="#FF7E00"/><%--Height="30px" HorizontalPadding="10px"--%>
<StaticSelectedStyle BackColor="#396395" ForeColor="#E0E0E0" /> <%--无二级菜单时的一级样式--%>
<DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="4px" Font-Strikeout="False" Height="24px" />
<StaticHoverStyle BackColor="#4982C5" ForeColor="#ffffff" /> <%--导航第一级鼠标放上背景颜色和字体颜色--%>
</asp:Menu>
2.cs
protected void initMenu()
{
DataTable dt = GetViewTable();
DataView dv = new DataView(dt);
dv.RowFilter = "QB_Fid='0'";
foreach (DataRowView drv in dv)
{
MenuItem node = new MenuItem();
node.Text = drv["QB_Name"].ToString();
node.Value = drv["QB_Id"].ToString();
node.NavigateUrl = drv["QB_Url"].ToString().Trim();
Menu1.Items.Add(node);
AddNodes(dt, node);
}
}
protected DataTable GetViewTable()
{
string strConn = System.Configuration.ConfigurationManager.AppSettings["strconnC"];
SqlConnection myConn = new SqlConnection(strConn);
string strSql = "select * from QX_Base where QB_JY=0 order by QB_Fid,QB_Sort";
SqlDataAdapter myDa = new SqlDataAdapter(strSql, myConn);
DataTable dt = new DataTable();
myDa.Fill(dt);
return dt;
}
/// <summary>
/// 子节点添加
/// </summary>
/// <param name="dt">数据表</param>
/// <param name="pNode"></param>
protected void AddNodes(DataTable dt, MenuItem pNode)
{
DataView dv = new DataView(dt);
dv.RowFilter = "QB_Fid =" + pNode.Value ;
foreach (DataRowView drv in dv)
{
MenuItem menuNode = new MenuItem();
menuNode.Text = drv["QB_Name"].ToString();
menuNode.NavigateUrl = drv["QB_Url"].ToString().Trim();
menuNode.Value = drv["QB_Id"].ToString();
pNode.ChildItems.Add(menuNode);
//loop循环
AddNodes(dt, menuNode);
}
}
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- c#调用COM组件
- DB2实例管理
- DB2实例管理
- mysql问答汇集
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- c#中虚函数的相关使用方法
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle 数据库 临时数据的处理方法
- 最近比较流行的数据库挂马
- 重装主控服务器后,数据库连接失败的解决办法:请正确还原数据库。
- 九种防MDB数据库被下载的方法小结
- asp向数据库插入数据的方法rs