aspx code
<ext:TreePanel ID="TreePanel1" runat="server" Region="West" RootVisible="false" Title="导航" Width="200" Collapsible="True" Split="True">
<Listeners>
<BeforeRender Handler="Ext.net.Mask.show()">
</BeforeRender>
<AfterRender Handler="Ext.net.Mask.hide()"></AfterRender>
</Listeners>
<TopBar>
<ext:Toolbar runat="server">
<Items>
<ext:Button runat="server" Text="展开">
<Listeners>
<Click Handler="#{TreePanel1}.expandAll();"></Click>
</Listeners>
</ext:Button>
<ext:Button ID="Button1" runat="server" Text="收缩">
<Listeners>
<Click Handler="#{TreePanel1}.collapseAll();"></Click>
</Listeners>
</ext:Button>
</Items>
</ext:Toolbar>
</TopBar>
<Store>
<ext:TreeStore runat="server" >
<Proxy>
<ext:AjaxProxy Url="handlers/Handler_menu.ashx">
</ext:AjaxProxy>
</Proxy>
<Model>
<ext:Model runat="server">
<Fields>
<ext:ModelField Name="id"></ext:ModelField>
<ext:ModelField Name="text"></ext:ModelField>
<ext:ModelField Name="url"></ext:ModelField>
</Fields>
</ext:Model>
</Model>
</ext:TreeStore>
</Store>
<Listeners>
<ItemClick Handler="addTab(#{TabPanel1},record.data.id, record.data.url, record.data.text);"></ItemClick>
</Listeners>
</ext:TreePanel>
ashx code
public class Handler_menu : IHttpHandler
{
MenuService menusrv = new MenuService();
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/json";
string json = buildjson(0, null);
string str = "[" + json.Substring(0, json.Length - 1) + "]";
context.Response.Write(str);
context.Response.End();
}
public string buildjson(int pid, StringBuilder sb)
{
List<menu> ll = menusrv.getMenuList(pid);
int n = ll.Count;
int i = 0;
foreach (var item in ll)
{
menu sm = item;
if (sb == null)
{
sb = new StringBuilder();
}
sb.Append("{");
sb.Append("'id':'" + sm.id + "',");
sb.Append("'text':'" + sm.name + "',");
sb.Append("'url':'" + sm.url + "'");
if (!menusrv.isLeaf(sm.id))
{
sb.Append(",");
sb.Append("children:[");
buildjson(sm.id, sb);
sb.Append("]");
sb.Append("},");
}
else
{
i = i + 1;
sb.Append(",'leaf':true");
if (i != n)
{
sb.Append("},");
}
else
{
sb.Append("}");
}
}
}
return sb.ToString();
}
public bool IsReusable
{
get
{
return false;
}
}
}
thanks