Dec 21, 2011, 7:40 AM
[CLOSED] Dynamically generate button and button menu problem.
My scene, Dynamically generate button and button menu according to the xml config file:
1) When click "b1" button, generate some buttons in the panel topbar (It seems no problem)
2) When click "b2" button, delete the buttons which "b1" created just now (I don't know to destroy)
3) And when click "b2" button, generate some button menu panel topbar. (It seems some error)
Please help me. Thanks.
1.xml
1.aspx
1) When click "b1" button, generate some buttons in the panel topbar (It seems no problem)
2) When click "b2" button, delete the buttons which "b1" created just now (I don't know to destroy)
3) And when click "b2" button, generate some button menu panel topbar. (It seems some error)
Please help me. Thanks.
1.xml
<?xml version="1.0" encoding="utf-8" ?>
<MENU>
<SubMenu ParentID="1.1.2">
<id>1.1.2.1</id>
<title>AA</title>
<url></url>
<iconcls>icon-buttons</iconcls>
</SubMenu>
<SubMenu ParentID="1.1.2">
<id>1.1.2.2</id>
<title>AB</title>
<url></url>
<iconcls>icon-buttons</iconcls>
</SubMenu>
<SubMenu ParentID="1.1.2">
<id>1.1.2.3</id>
<title>AC</title>
<url></url>
<iconcls>icon-buttons</iconcls>
</SubMenu>
<SubMenu ParentID="3.2.1">
<id>3.2.1.1</id>
<title>EE</title>
<url></url>
<iconcls>icon-buttons</iconcls>
</SubMenu>
<SubMenu ParentID="3.2.1.1">
<id>3.2.1.1.1</id>
<title>EE-1</title>
<url></url>
<iconcls>icon-buttons</iconcls>
</SubMenu>
<SubMenu ParentID="3.2.1.1">
<id>3.2.1.1.2</id>
<title>EE-2</title>
<url></url>
<iconcls>icon-buttons</iconcls>
</SubMenu>
<SubMenu ParentID="3.2.1.1">
<id>3.2.1.1.3</id>
<title>EE-3</title>
<url></url>
<iconcls>icon-buttons</iconcls>
</SubMenu>
<SubMenu ParentID="3.2.1">
<id>3.2.1.2</id>
<title>EF</title>
<url></url>
<iconcls>icon-buttons</iconcls>
</SubMenu>
<SubMenu ParentID="3.2.1.2">
<id>3.2.1.2.1</id>
<title>EF-1</title>
<url></url>
<iconcls>icon-buttons</iconcls>
</SubMenu>
<SubMenu ParentID="3.2.1.2">
<id>3.2.1.2.2</id>
<title>EF-2</title>
<url></url>
<iconcls>icon-buttons</iconcls>
</SubMenu>
</MENU>
1.aspx
<body>
<ext:ResourceManager ID="extAjaxScriptManager" runat="server" />
<ext:Viewport ID="Viewport1" runat="server" Layout="FitLayout">
<Items>
<ext:Panel ID="CenterPanel" runat="server" Layout="FitLayout" Region="Center">
<TopBar>
<ext:Toolbar ID="tbCenterPanel" runat="server">
<Items>
<ext:Button ID="bRefresh" runat="server" Text="Refresh" Icon="ArrowRefresh">
</ext:Button>
<ext:Button ID="bCopyUrl" runat="server" Text="Copy URL" Icon="PageCopy">
</ext:Button>
<ext:ToolbarSeparator />
</Items>
</ext:Toolbar>
</TopBar>
<Items>
<ext:Panel ID="Panel2" runat="server">
<TopBar>
<ext:Toolbar runat="server">
<Items>
<ext:Button ID="b1" Text="Add 1" runat="server">
<DirectEvents>
<Click OnEvent="b1_Click" />
</DirectEvents>
</ext:Button>
<ext:Button ID="b2" Text="Add 2" runat="server">
<DirectEvents>
<Click OnEvent="b2_Click" />
</DirectEvents>
</ext:Button>
</Items>
</ext:Toolbar>
</TopBar>
</ext:Panel>
</Items>
</ext:Panel>
</Items>
</ext:Viewport>
</body>
1.aspx.cs public partial class _1 : System.Web.UI.Page
{
private const string MENU_ID = "id";
private const string MENU_URL = "url";
private const string MENU_TITLE = "title";
private const string MENU_ICONCLS = "iconcls";
DataSet m_dsSubMenu = new DataSet();
protected void Page_Load(object sender, EventArgs e)
{
GetSubMenuDataSet();
}
protected void b1_Click(object sender, DirectEventArgs e)
{
CreatSubMenu("1.1.2");
}
protected void b2_Click(object sender, DirectEventArgs e)
{
CreatSubMenu("3.2.1");
}
private void CreatSubMenu(string szTreeId)
{
/*----------------Variables Declaration---------------*/
System.Data.DataView dvMenu;
DataRow[] drMenus;
/*----------------Operations---------------*/
try
{
dvMenu = new System.Data.DataView();
dvMenu.Table = m_dsSubMenu.Tables[0];
dvMenu.RowFilter = "ParentID='" + szTreeId + "'";
drMenus = m_dsSubMenu.Tables[0].Select("ParentID='" + szTreeId + "'");
foreach (DataRow drMenu in drMenus)
{
Ext.Net.Button button = new Ext.Net.Button();
button.ID = "button" + drMenu[MENU_ID].ToString();
button.Text = drMenu[MENU_TITLE].ToString();
button.IconCls = drMenu[MENU_ICONCLS].ToString();
if (drMenu[MENU_URL].ToString() != string.Empty)
{
//button.Listeners.Click.Handler = "Ext.Msg.alert('Click','" + drMenu[MENU_URL].ToString() + "')";
//button.Listeners.Click.Handler = "changeSubMenuURL('" + drMenu[MENU_URL].ToString() + "')";
}
CenterPanel.TopBar.Toolbar.Items.Add(button);
button.Render();
//CenterPanel.Render();
// To add leaf to each treepanel
InitSubMenuLeaf(button, drMenu[MENU_ID].ToString());
}
}
catch
{
throw;
}
}
private void InitSubMenuLeaf(Ext.Net.Button button, string szParentId)
{
/*----------------Variables Declaration---------------*/
string tmpRootId;
System.Data.DataView dvMenu;
Ext.Net.MenuItem menuItem;
Ext.Net.Menu menu = new Ext.Net.Menu();
/*----------------Operations---------------*/
try
{
tmpRootId = szParentId;
dvMenu = new System.Data.DataView();
dvMenu.Table = m_dsSubMenu.Tables[0];
dvMenu.RowFilter = "parentid = '" + szParentId + "'";
foreach (DataRowView drv in dvMenu)
{
menuItem = new Ext.Net.MenuItem();
menuItem.ID = "menuItem" + drv[MENU_ID].ToString();
menuItem.Text = (string)drv[MENU_TITLE];
menuItem.IconCls = drv[MENU_ICONCLS].ToString();
menu.Items.Add(menuItem);
menuItem.Render();
}
if (dvMenu.Count > 0)
{
button.Menu.Add(menu);
menu.Render();
}
}
catch
{
throw;
}
}
private DataSet GetSubMenuDataSet()
{
/*----------------Variables Declaration---------------*/
string szXmlPath;
/*----------------Operations---------------*/
try
{
szXmlPath = "~/1.xml";
szXmlPath = HostingEnvironment.MapPath(szXmlPath);
m_dsSubMenu.ReadXml(szXmlPath);
return m_dsSubMenu;
}
catch
{
return null;
throw;
}
}
}
Last edited by Daniil; Dec 22, 2011 at 5:08 AM.
Reason: [CLOSED]