【ASP.NET】Repeater的那些事
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>