使用巢狀的Repeater控制項顯示分級資料

2021-08-22 18:27:13 字數 3512 閱讀 4756

簡介

本文描述如何使用巢狀的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 小類 ...