【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>

 

 

  


免責聲明!

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



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