相对于上一次的使用relation的缺点:
1. 不能限制返回的纪录数;2. 邦定时不方便,甚至不能邦定上;3. 程序简单,但不容易理解。4. 可能对于三层以上的嵌套不容易实现。
这次给出的嵌套方案,使用的itemdatabound事件进行嵌套,实现起来很方便,其容易理解。并且解决了以上四个问题。
以下是主要的代码:
<asp:datalist id=”dlist_class” datakeyfield=”navigatorid”
backcolor=”#ffffff” borderwidth=”0px” cellpadding=”1″
showfooter=”false” showheader=”false” runat=”server”
cellspacing=”20″ horizontalalign=”justify” repeatcolumns=”2″
repeatdirection=”horizontal” repeatlayout=”table” >
<itemstyle verticalalign=top></itemstyle>
<itemtemplate>
<b><%# databinder.eval(container.dataitem,”navigatorid”) %> @
<%# databinder.eval(container.dataitem,”nodecaption”) %></b>
<hr>
<asp:datagrid id=dg_subclass width=315px runat=server
autogeneratecolumns=”false”
showheader=”false” showfooter=”false” pagesize=”10″ allowpaging=”true”
pagerstyle-visible=”false” borderwidth=”1″ backcolor=”#ffffff” bordercolor=”#ffffff”
cellpadding=”0″ cellspacing=”0″ gridlines=horizontal
onitemdatabound=dg_subclass_itemdatabound>
<itemstyle height=”14px” backcolor=”#e3f1ff” cssclass=”gridhover”></itemstyle>
<columns>
<asp:boundcolumn datafield =”moduletype” readonly=true >
<itemstyle width=25 horizontalalign=center ></itemstyle>
</asp:boundcolumn>
<asp:boundcolumn datafield=”nodecaption” >
<itemstyle horizontalalign=left cssclass=”nav”></itemstyle>
</asp:boundcolumn>
<asp:boundcolumn datafield =”moduletype” readonly=true>
<itemstyle width=90 horizontalalign=center></itemstyle>
</asp:boundcolumn>
</columns>
</asp:datagrid>
</itemtemplate>
</asp:datalist>
private void dlist_class_itemdatabound(object sender, system.web.ui.webcontrols.datalistitemeventargs e)
{
if (e.item.itemtype == listitemtype.item || e.item.itemtype == listitemtype.alternatingitem)
{
datagrid dg=(datagrid)e.item.findcontrol(“dg_subclass”);
string itemindex =this.dlist_class.datakeys[e.item.itemindex].tostring();
string[] strsqlarray =new string[3]{“select top 10 iorder, ilevel, iparentid, navigatorid, nodecaption,moduleid, moduletype from navigatornodes where iparentid in ( “, itemindex, “);”};
string strsql=string.concat(strsqlarray);
string tablename =”subclass”+itemindex;
this.dbclass.adapterfill(ds, commandtype.text, strsql, tablename, new oledbparameter[0]);
dg.itemdatabound += new system.web.ui.webcontrols.datagriditemeventhandler(this.dg_subclass_itemdatabound);
dg.datasource =ds.tables[tablename].defaultview;
dg.databind();
}
}
====================
更多内容,欢迎访问ms.mblogger.cn/nono