Repeater常用事件:
Repeater有兩個事件比較常用,①:Repeater1_ItemDataBound;②:Repeater1_ItemCommand;第一個事件net小伙已經在【ASP.NET】ItemDataBound之repeater 和 listview 寫過了。現在敘述第二個事件。

從MSDN上可以看出,如果在Repeater中插入一個按鈕的時候,執行此按鈕的OnClick事件的時候需要借助此事件來完成。
在Repeater中插入按鈕的時候要對按鈕的源碼進行設置:
<asp:Button ID="Button1" CommandName="bianji" runat="server" OnClientClick="return window.confirm('確認要通過嗎? ')" CommandArgument='<%#Eval("Title") %>' Text="通過" />
從代碼當中可以看出,在Button中插入了兩個屬性 ——CommandName和CommandArgument;


CommandName的作用就是為了在后台可以找到此按鈕,就像按鈕的ID。CommandArgument的作用就是把所需要的參數傳遞到后台。
后台代碼如下:
1 protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) 2 { 3 if (e.CommandName == "bianji") 4 { 5 modelnew.Title = e.CommandArgument.ToString(); 6 if (dalnews.updatestate(modelnew)) 7 { 8 Repeater1.DataBind(); 9 } 10 11 12 } 13 }
Repeater分頁功能:
Repeater不像其他的數據控件有內置的分頁功能,如果想在Repeater中實現分頁功能,需要借助PagedDataSource來實現分頁。

前台代碼如下:
前台代碼
1 <asp:Repeater ID="Repeater1" runat="server"> 2 <HeaderTemplate> 3 <table width="100%" style="background-color: #ADD2DA"> 4 <tr> 5 <td >id</td> 6 <td >新聞名</td> 7 <td >發布時間</td> 8 9 <td >發布人</td> 10 <td>發布狀態</td> 11 </tr> 12 13 </HeaderTemplate> 14 <ItemTemplate> 15 <tr style="background-color:#DCDCDC;color: #000000;"> 16 17 18 <td style="width:"5%"> 19 <asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' /> 20 </td> 21 22 <td style="width:"40%"> 23 <asp:Label ID="TitleLabel" runat="server" Text='<%# Eval("Title") %>' /> 24 </td> 25 26 27 28 <td style="width:"15%"> 29 <asp:Label ID="DataTimeLabel" runat="server" Text='<%# Eval("DataTime") %>' /> 30 </td> 31 32 33 <td style="width:"10%"> 34 <asp:Label ID="UserNameLabel" runat="server" Text='<%# Eval("UserName") %>' /> 35 </td> 36 <td style="width:"10%"> 37 <asp:Label ID="Label1" runat="server" Text='<%# Eval("State") %>' /> 38 </td> 39 40 41 </tr> 42 </ItemTemplate> 43 <FooterTemplate></table></FooterTemplate> 44 </asp:Repeater> 45 46 47 <table border="1" width="100%"> 48 <tr><td align="center"> 49 <asp:LinkButton ID="lbtnFirstPage" runat="server" OnClick="lbtnFirstPage_Click">頁首</asp:LinkButton> 50 <asp:LinkButton ID="lbtnpritPage" runat="server" OnClick="lbtnpritPage_Click">上一頁</asp:LinkButton> 51 <asp:LinkButton ID="lbtnNextPage" runat="server" OnClick="lbtnNextPage_Click">下一頁</asp:LinkButton> 52 <asp:LinkButton ID="lbtnDownPage" runat="server" OnClick="lbtnDownPage_Click">頁尾</asp:LinkButton><br /> 53 第<asp:Label ID="labPage" runat="server" Text="Label"></asp:Label>頁/共<asp:Label ID="LabCountPage" runat="server" Text="Label"></asp:Label> 54 頁 55 </td></tr> 56 </table>
后台代碼:
后台代碼
1 protected void Page_Load(object sender, EventArgs e) 2 { 3 if (!IsPostBack) 4 { 5 this.labPage.Text = "1"; 6 this.fenye(); 7 } 8 } 9 10 void fenye() 11 { 12 13 //獲取數據源 14 PagedDataSource pds = new PagedDataSource(); 15 DataTable ds = getalldata(); 16 pds.DataSource = ds.DefaultView; 17 //設置允許分頁 18 pds.AllowPaging = true; 19 //設置在單頁上顯示的條數 20 pds.PageSize = 5; 21 //獲取或設置當前頁的索引 22 pds.CurrentPageIndex = Int32.Parse(labPage.Text) - 1; 23 //綁定控件的數據源 24 Repeater1.DataSource = pds; 25 Repeater1.DataBind(); 26 //設置頁的總數 27 LabCountPage.Text = pds.PageCount.ToString(); 28 //設置按鈕的可操作性 29 lbtnDownPage.Enabled = true; 30 lbtnFirstPage.Enabled = true; 31 lbtnNextPage.Enabled = true; 32 lbtnpritPage.Enabled = true; 33 if (pds.CurrentPageIndex < 1) 34 { 35 lbtnFirstPage.Enabled = false; 36 lbtnpritPage.Enabled = false; 37 } 38 if (pds.CurrentPageIndex == pds.PageCount - 1) 39 { 40 lbtnDownPage.Enabled = false; 41 lbtnNextPage.Enabled = false; 42 } 43 44 45 46 } 47 48 DataTable getalldata() 49 { 50 51 using (SqlConnection cons = new SqlConnection("server = .; database = newsrelease; integrated security=SSPI;")) 52 { 53 string liketitle = string.Format("select * from T_News"); 54 SqlDataAdapter da = new SqlDataAdapter(liketitle, cons); 55 DataTable ds = new DataTable(); 56 da.Fill(ds); 57 if (ds != null) 58 { 59 return ds; 60 } 61 else 62 { 63 return null; 64 } 65 66 } 67 } 68 69 //設置首頁按鈕功能 70 protected void lbtnFirstPage_Click(object sender, EventArgs e) 71 { 72 labPage.Text = "1"; 73 this.fenye(); 74 } 75 //設置上一頁按鈕功能 76 protected void lbtnpritPage_Click(object sender, EventArgs e) 77 { 78 labPage.Text = (Int32.Parse(labPage.Text) - 1).ToString(); 79 this.fenye(); 80 } 81 //設置下一頁按鈕功能 82 protected void lbtnNextPage_Click(object sender, EventArgs e) 83 { 84 labPage.Text = (Int32.Parse(labPage.Text) + 1).ToString(); 85 this.fenye(); 86 } 87 //設置尾頁按鈕功能 88 protected void lbtnDownPage_Click(object sender, EventArgs e) 89 { 90 labPage.Text = LabCountPage.Text; 91 this.fenye(); 92 } 93 94 95 96 97
怎么使Repeater的數據橫着顯示:
只需要設置Repeater的ItemTemplate綁定的數據以UL的形式顯示,並且設置其CSS的樣式向左邊浮動即可,代碼如下:
橫着顯示Repeater數據
1 <asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1"> 2 <ItemTemplate> 3 <a href="typenews.aspx?type=<%#Eval("id") %>" class="home" > 4 <ul style="float:left;font-size: x-large"> 5 <li><%#Eval("TypeName") %> </li> 6 </ul> 7 </a> 8 </ItemTemplate> 9 </asp:Repeater>
