107 lines
3.1 KiB
C#
107 lines
3.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Web;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
using System.Data;
|
|
using System.Text;
|
|
using System.Xml;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
|
|
namespace FineUI.Examples.toolbar
|
|
{
|
|
public partial class menu_dynamic : PageBase
|
|
{
|
|
|
|
protected void Page_Init(object sender, EventArgs e)
|
|
{
|
|
LoadToolbar();
|
|
}
|
|
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
}
|
|
|
|
|
|
private void LoadToolbar()
|
|
{
|
|
XmlDocument doc = LoadXml();
|
|
|
|
// 根节点的子节点们
|
|
XmlNodeList nodes = doc.DocumentElement.ChildNodes;
|
|
|
|
foreach (XmlNode node in nodes)
|
|
{
|
|
FineUI.Button btn = new Button();
|
|
btn.Text = node.Attributes["text"].Value;
|
|
btn.EnablePostBack = false;
|
|
Toolbar1.Items.Add(btn);
|
|
|
|
// 如果此节点没有子节点
|
|
if (node.ChildNodes.Count == 0)
|
|
{
|
|
XmlAttribute attrURL = node.Attributes["navigateurl"];
|
|
if (attrURL != null)
|
|
{
|
|
btn.OnClientClick = String.Format("window.open('{0}','_blank')", attrURL.Value);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ResolveMenu(btn, node.ChildNodes);
|
|
}
|
|
}
|
|
}
|
|
|
|
private XmlDocument LoadXml()
|
|
{
|
|
// 加载XML配置文件
|
|
string xmlPath = Server.MapPath("~/toolbar/menu.xml");
|
|
string xmlContent = String.Empty;
|
|
using (StreamReader sr = new StreamReader(xmlPath))
|
|
{
|
|
xmlContent = sr.ReadToEnd();
|
|
}
|
|
XmlDocument doc = new XmlDocument();
|
|
doc.LoadXml(xmlContent);
|
|
return doc;
|
|
}
|
|
|
|
|
|
private void ResolveMenu(ControlBase btn, XmlNodeList nodes)
|
|
{
|
|
//FineUI.Menu menu = new Menu();
|
|
//// 通过反射获取属性Menus
|
|
//PropertyInfo info = btn.GetType().GetProperty("Menus");
|
|
//(info.GetValue(btn, null) as MenuCollection).Add(menu);
|
|
|
|
PropertyInfo menuInfo = btn.GetType().GetProperty("Menu");
|
|
Menu menu = menuInfo.GetValue(btn, null) as Menu;
|
|
|
|
foreach (XmlNode node in nodes)
|
|
{
|
|
XmlAttribute attrURL = node.Attributes["navigateurl"];
|
|
if (attrURL != null)
|
|
{
|
|
FineUI.MenuHyperLink lnk = new FineUI.MenuHyperLink();
|
|
lnk.Text = node.Attributes["text"].Value;
|
|
lnk.NavigateUrl = attrURL.Value;
|
|
lnk.Target = "_blank";
|
|
|
|
menu.Items.Add(lnk);
|
|
|
|
if (node.ChildNodes.Count > 0)
|
|
{
|
|
ResolveMenu(lnk, node.ChildNodes);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|