簡介
本文描述如何使用巢狀的repeater 控制項來顯示分級資料 。當然了,你也可以將這一技術應用到其他的列表繫結控制項上去,比如datagrid包含datagrid,datalist包含datalist等等的組合。
繫結到父表
1.新增乙個新的web form 到應用程式專案中,名稱為nestedrepeater.aspx.
2.從工具箱託動乙個repeater 控制項到這個頁面上, 設定其id 屬性為 parent .
3.切換到html 檢視.
4.選中下列<itemtemplate> **,複製到repeater 控制項對應的位置。注意,貼上的時候請使用「貼上為html」功能。這些語句包含了資料繫結語法,很簡單。
<itemtemplate>
<b><%# databinder.eval(container.dataitem, "au_id") %></b><br>
</itemtemplate>
5.開啟nestedrepeater.aspx.cs 這個**分離檔案。降下列**新增到page_load 事件中,其作用是建立乙個到 pubs (這個資料庫是sql server的演示資料庫。另外在安裝.net framework sdk的時候也會安裝這個資料庫)資料庫的連線,並繫結authors 表到repeater 控制項
public void page_load()
6.在檔案的頭部新增下面的命名空間
using system.data.sqlclient;
7.根據你自己的情況修改一下連線字串
8.儲存並編譯應用程式
9.在瀏覽器中開啟這個頁面,輸出結果類似於下面的格式
172-32-1176
213-46-8915
238-95-7766
267-41-2394
...
繫結到子表
1.在頁面的html檢視中,新增下列**。其目的是增加子repeater 控制項到父repeater的專案模板中,形成巢狀。
<asp:repeater id="child" runat="server">
<itemtemplate>
<%# databinder.eval(container.dataitem, "[/"title_id/"]") %><br>
</itemtemplate>
</asp:repeater>
2.設定子repeater 控制項的datasource 屬性:
<asp:repeater ... datasource='<%# ((datarowview)container.dataitem)
.row.getchildrows("myrelation") %>'>
3.在頁面頂部新增下列指令(請注意,是在.aspx檔案中):
<%@ import namespace="system.data" %>
在.cs檔案中,將page_load中的注釋部分(//這裡將要插入子表的資料繫結)替換成下列**:
sqldataadapter cmd2 = new sqldataadapter("select * from titleauthor",cnn);
cmd2.fill(ds,"titles");
ds.relations.add("myrelation",
ds.tables["authors"].columns["au_id"],
ds.tables["titles"].columns["au_id"]);
4.儲存並編譯應用程式。
.在瀏覽器中察看修改後的頁面。顯示格式類似於下面的格式:
172-32-1176
ps3333
213-46-8915
bu1032
bu2075
238-95-7766
pc1035
267-41-2394
bu1111
tc7777
...
完整的**
nestedrepeater.aspx
<%@ page language=c# inherits="yourprojectname.nestedrepeater" %>
<%@ import namespace="system.data" %>
<html>
<body>
<form runat=server>
<!-- start parent repeater -->
<asp:repeater id="parent" runat="server">
<itemtemplate>
<b><%# databinder.eval(container.dataitem,"au_id") %></b><br>
<!-- start child repeater -->
<asp:repeater id="child" datasource='<%# ((datarowview)container.dataitem)
.row.getchildrows("myrelation") %>' runat="server">
<itemtemplate>
<%# databinder.eval(container.dataitem, "[/"title_id/"]")%><br>
</itemtemplate>
</asp:repeater>
<!-- end child repeater -->
</itemtemplate>
</asp:repeater>
<!-- end parent repeater -->
</form>
</body>
</html>
nestedrepeater.aspx.cs
using system;
using system.data;
using system.data.sqlclient;
using system.web;
using system.web.sessionstate;
using system.web.ui;
using system.web.ui.webcontrols;
namespace yourprojectname
public void page_load(object sender, eventargs e)
private void page_init(object sender, eventargs e)
private void initializecomponent()}}
微軟的幫助
實現微軟幫助的乙個例子:
使用巢狀的repeater控制項顯示分級資料
另一種方法
其中關鍵在於
private void replm_itemdatabound(object sender, system.web.ui.webcontrols.repeateritemeventargs e)
}
Repeater 控制項巢狀使用
概述 在專案中做許可權的時候使用到了repeater的巢狀 像for迴圈巢狀 如圖 這裡的功能頁面和功能許可權都是通過repeater遍歷出來的,表示的是乙個功能頁面中包含多個功能許可權,是個一對多的關係。具體的許可權設計這裡不說明,主要是說如何進行repeater巢狀的。具體步驟如下 第一步 定義...
Repeater控制項的巢狀使用
1.前台 orderlist runat server onitemdatabound orderlist itemdatabound class item class table style border 1px solid ddcccc border right none cellspacing...
Repeater巢狀控制項
在我們編寫程式的時候經常會遇到控制項巢狀的問題。通常最經常用到的控制項時repeater,以下是一兩個列子。html databinder.eval container,dataitem.au id 大類 databinder.eval container,dataitem.title id 小類 ...