【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") %>&nbsp</li>
6                                     </ul>
7                                 </a>
8                             </ItemTemplate>
9                         </asp:Repeater>

 

 

  

posted @ 2012-06-14 11:18  net小伙  阅读(8924)  评论(0编辑  收藏  举报