1. 程式人生 > >牛腩新聞釋出系統之repeater控制元件

牛腩新聞釋出系統之repeater控制元件

進行了牛腩新聞釋出系統,運用到了許多之前沒有學習過的新的控制元件,特此總結一下,以待後時之需

資料控制元件:Repeater

Repeater控制元件,可用來一次顯示一組資料項,比如可以用它們顯示一個數據表中的所有行。

優點:

Repeater控制元件完全由模板驅動,提供了最大的靈活性,可以任意設定它的輸出格式。同時它的靈活性還體現在它不僅可以放到.net中,完全可以自由發揮,想怎麼顯示就怎麼顯示,還可以把它放在JavaScript程式碼中。

模板:

Repeater支援一下五種模板

  • ItemTemplate:對每一個數據項進行格式設定【Formats each item from the data source】
  • AlternatingItemTemplate:對交替資料項進行格式設定
  • SeparatorTemplate:對分隔符進行格式設定
  • HeaderTemplate:對頁首進行格式設定
  • FooterTemplate:對頁尾進行格式設定

以上,英文中使用了Formats item from datasource這樣的話,就說明Repeater控制元件主要是用來對資料進行format的,控制資料怎麼樣排列,怎麼樣顯示。

Repeater必須使用的是Itemtemplate,其他型別的模板按需新增

事件處理:

Repeater控制元件有以下事件

      ● DataBinding : Repeater控制元件繫結到資料來源時觸發 
      ● ItemCommand : Repeater控制元件中的子控制元件觸發事件時觸發 
      ● ItemCreated : 建立Repeater每個專案時觸發  
      ● ItemDataBound : Repeater控制元件的每個專案繫結資料時觸發 

例項:

前端程式碼:

<asp:Repeater ID="repNews" runat="server">
     <ItemTemplate>
         <tr>
            <td><%#Eval("id") %></td>
            <td><a href='../newscontent.aspx?newsid=<%#Eval("id") %>' target="_blank"><%#Eval("title") %></a></td>
            <td><a href='modnews.aspx?newsid=<%#Eval("id") %>' target="_blank">修改</a></td>
            <td>
            <asp:LinkButton ID="lbtnDel" OnClientClick ="return confirm('刪除新聞會連同其下評論一起刪除,是否刪除?')" OnClick="lbtnDel_Click" CommandArgument='<%#Eval("id") %>' runat="server">刪除</asp:LinkButton>
            </td>
            </tr>
       </ItemTemplate>
 </asp:Repeater>

後端程式碼:

protected void Page_Load(object sender, EventArgs e)
{
    //判斷session裡面是否存在管理員
    if (Session["admin"] != null && Session["admin"].ToString() == "sa")
    {
        //已登入
        if (!Page.IsPostBack)
        {
            BindNews();
            //查詢出了記錄的總數
            AspNetPager1.RecordCount = new NewsManager().SelectAll().Rows.Count;
        }
     }
     else
     {
           //未登陸
           Response.Redirect("/admin/login.aspx");
     }            
}
private void BindNews()
{
    repNews.DataSource = new NewsManager().FenYeSelectALL (AspNetPager1.StartRecordIndex,AspNetPager1.StartRecordIndex +9);
    repNews.DataBind();
}