DevExpress 菜单控件ASPxMenu的使用
以前做网站导航,,直接在控件中创建几个Item,这种很死,导航菜单,不能控制,
今天花了一下午,搞这个动态导航菜单,终于找到了方法,
贴出来给大家看看,
< %@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="DevExpress.Web.v8.1, Version=8.1.1.0, Culture=neutral, PublicKeyToken=e0b364db0ebed33f"
Namespace="DevExpress.Web.ASPxMenu" TagPrefix="dxm" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<dxm:ASPxMenu ID="ASPxMenu1" runat="server">
</dxm:ASPxMenu>
</div>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/data.mdb"
SelectCommand="SELECT * FROM [MenuData] where ParentID>0"></asp:AccessDataSource>
</form>
</body>
</html>
后台代码
using System;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using DevExpress.Web.ASPxSiteMapControl;
using DevExpress.Web.ASPxMenu;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
BuildMenu(ASPxMenu1, AccessDataSource1, false);
}
protected void BuildMenu(ASPxMenu menu, SqlDataSource dataSource, bool enableRoles)
{
// Get DataView
DataSourceSelectArguments arg = new DataSourceSelectArguments();
DataView dataView = dataSource.Select(arg) as DataView;
dataView.Sort = "ParentID";
// Build Menu Items
Dictionary<string, DevExpress.Web.ASPxMenu.MenuItem> menuItems =
new Dictionary<string, DevExpress.Web.ASPxMenu.MenuItem>();
for (int i = 0; i < dataView.Count; i++)
{
DataRow row = dataView[i].Row;
DevExpress.Web.ASPxMenu.MenuItem item = CreateMenuItem(row);
string itemID = row["ID"].ToString();
string parentID = row["ParentID"].ToString();
if (menuItems.ContainsKey(parentID))
{
menuItems[parentID].Items.Add(item);
}
else
{
menu.Items.Add(item);
}
menuItems.Add(itemID, item);
}
}
private DevExpress.Web.ASPxMenu.MenuItem CreateMenuItem(DataRow row)
{
DevExpress.Web.ASPxMenu.MenuItem ret = new DevExpress.Web.ASPxMenu.MenuItem();
ret.Text = row["Text"].ToString();
ret.NavigateUrl = row["NavigateUrl"].ToString();
ret.Image.Url = row["ImageUrl"].ToString();
return ret;
}
}
这个问题是解决了,后面就是样式的问题了,我做的导航要跟某个网站的差不多,又搞了很久,终于给我调出来了,
主要设置几个属性
pop:0
itemstyle backgroungimg中要注意REPEAT