asp.net動態網站repeater控件使用及分頁操作介紹


asp.net動態網站repeater控件使用及分頁操作介紹

1.簡單介紹

Repeater 控件是一個容器控件,可用於從網頁的任何可用數據中創建自定義列表。Repeater 控件沒有自己內置的呈現功能,這意味着用戶必須通過創建模板來提供 Repeater 控件的布局。當網頁運行時,Repeater 控件會循環通過數據源中的記錄,並為每個記錄呈現一個項。


2.布局

一個完整的Repeater包括:

<!--頭部模板,放表格開始及第一行標題-->
<HeaderTemplate></HeaderTemplate> 
<!--項目模板,會進行循環顯示,放置表格第二行-->
<ItemTemplate></ItemTemplate>
<!--底部模板,放表格結束部分-->
<FooterTemplate> </FooterTemplate>

3.使用repeater進行數據綁定

代碼見下

//從Person表中查出所有數據
string sqlselect = "select * from Person";
//使用自己封裝好的類從數據庫里查詢信息,返回一個DataTable類型的數據
DataTable dt = SQLHelper.DataT(sqlselect);
//將數據綁定到repeater的數據源上
this.RptPreson.DataSource = dt;
//顯示數據
this.RptPreson.DataBind();

4.repeater的刪除功能

在Repeater中添加刪除的LinkButton:

<asp:LinkButton ID="lbtDelete" CommandName="Delete" CommandArgument='<%#Eval("id") %>' runat="server">刪除</asp:LinkButton> 

給LinkButton的CommandName屬性和CommandArgument屬性賦值,然后通過OnCommand事件中,就可以得到CommandEventArgs類中的數據,從而到判斷是哪個LinkButton被按動了。CommandEventArgs類存儲了與Button事件相關的數據,並且可以在事件處理中通過CommandEventArgs類的屬性來訪問這些數據。說的明白些,就是當LinkButton被按動后,這個LinkButton所觸發的數據都被儲存到服務器的CommandEventArgs類中,訪問CommandEventArgs類中的屬性也就訪問了被按動的LinkButton了。
簡單地講,系統通過CommandName來確定哪一類Button被按下,進而確定應該執行的操作,通過CommandArgument來確定應該對哪一條數據進行操作。

if (e.CommandName == "Delete")
	{//刪除行內容命令  
		id = int.Parse(e.CommandArgument.ToString());
		string sqlDelete = "delete from Person where ID='" + Convert.ToInt32(id) + "'";
		SQLHelper.OperateSql(sqlDelete);
		Response.Write("<script>alert('刪除成功'),location='Person.aspx'</script>");
	}

5.repeater實現分頁操作

//PagedDataSource 類封裝 Repeater控件的屬性,這些屬性使之可以執行分頁。
PagedDataSource pds = new PagedDataSource();
pds.DataSource = dt.DefaultView;     //獲取或設置數據源
pds.AllowPaging = true;//允許分頁
pds.PageSize = 2;//單頁顯示項數
lbTotal.Text = pds.PageCount.ToString();//獲取頁面總數
int CurPage=1;
pds.CurrentPageIndex = CurPage - 1;////當前頁數,因為從0開始,所以接收到的數減1
RptBook.DataSource = pds;//將數據綁定到repeater控件上
RptBook.DataBind();

6.repeater嵌套使用

<asp:Repeater ID="RptPerson" runat="server" OnItemDataBound="RptPerson_ItemDataBound">
        <ItemTemplate>
            <h2>
            姓名:
           <%#Eval("name") %>
                </h2>
            <h3>擁有的書籍</h3>
            <%--嵌套Repeater,顯示每個人的書籍 --%>
            <asp:Repeater ID="RptBook" runat="server" OnItemCommand="RptBook_ItemCommand">
                <ItemTemplate>
                    <%#Eval("book") %>
                </ItemTemplate>
            </asp:Repeater>
            <%--嵌套Repeater結束--%>
            <br />
        </ItemTemplate>
    </asp:Repeater>

后台.cs文件部分:
Repeater數據分為 Item 和AlternatingItem ,比如 第一行 數據是Item,第二行 數據是AlternatingItem ,第三行 數據是Item……….

//
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
{


}

//作用就是判斷Reaperter的第幾行

Repeater嵌套實現“樓中樓”

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
      //找到外層Repeater的數據項
        DataRowView rowv = (DataRowView)e.Item.DataItem;
        //提取外層Repeater的數據項的ID
        int ID = Convert.ToInt32(rowv["ID"]);
        //找到對應ID下的Book
        string select = "select * from Book where ownerid=" + ID.ToString();
        //找到內嵌Repeater
        Repeater rept = (Repeater)e.Item.FindControl("RptBook");
        //數據綁定
        rept.DataSource = SQLHelper.SelectS(select);
        rept.DataBind();
		
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM