Repeater控件使用(含删除,分页功能)

以SQL SERVER2000自带数据库Northwind中Customers表示例. 前台aspx代以码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Repeater.aspx.cs" Inherits="Repeater" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">     <title>Repeater控件使用</title>     <script language="javascript" type="text/javascript">     function Check(parentChk,ChildId)     {         var oElements = document.getElementsByTagName("INPUT");         var bIsChecked = parentChk.checked;        for(i=0; i<oElements.length;i++)         {             if( IsCheckBox(oElements[i]) &&                 IsMatch(oElements[i].id, ChildId))             {                 oElements[i].checked = bIsChecked;             }         }      }     function IsMatch(id, ChildId)     {         var sPattern =’^Repeater1.*’+ChildId+’$';         var oRegExp = new RegExp(sPattern);         if(oRegExp.exec(id))             return true;         else             return false;     }     function IsCheckBox(chk)     {         if(chk.type == 'checkbox') return true;         else return false;     }     </script> </head> <body>     <form id="form1" runat="server">     <div style="margin-bottom:20px;text-align:center; width:1006px;">Repeater控件使用</div> <asp:Repeater ID="Repeater1" runat="server">     <%--SeparatorTemplate描述一个介于每条记录之间的分隔符--%>     <%--<SeparatorTemplate>         <tr>         <td colspan="5"><hr /></td>         </tr>     </SeparatorTemplate>--%>     <HeaderTemplate>       <table border="1" cellpadding="0" cellspacing="0" style="width:1006px;border-collapse:collapse; text-align:center;">       <tr>         <td style="background-color:#cccccc; font-weight:bold; height:25px;"><input id="chkAll" name="chkAll" runat="server" type="checkbox" onclick="Check(this,’chkItem')" title="全选" />全</td>         <td style="background-color:#cccccc; font-weight:bold; height:25px;">View</td>         <td style="background-color:#cccccc; font-weight:bold; height:25px;">CustomerID</td>         <td style="background-color:#cccccc; font-weight:bold;">CompanyName</td>         <td style="background-color:#cccccc; font-weight:bold;">ContactName</td>         <td style="background-color:#cccccc; font-weight:bold;">ContactTitle</td>         <td style="background-color:#cccccc; font-weight:bold;">Address</td>       </tr>     </HeaderTemplate>     <ItemTemplate>       <tr>         <td><asp:CheckBox ID="chkItem" runat="server" /></td>         <td><a href='<%# "View.aspx?id="+DataBinder.Eval(Container.DataItem, "CustomerID") %>' target="_blank">View</a></td>         <td><asp:Label ID="lblID" Text='<%# DataBinder.Eval(Container.DataItem, "CustomerID")%>' runat="server"></asp:Label></td>         <td><%# DataBinder.Eval(Container.DataItem, "CompanyName")%></td>         <td><%# DataBinder.Eval(Container.DataItem, "ContactName")%></td>         <td><%# DataBinder.Eval(Container.DataItem, "ContactTitle")%></td>         <td><%# DataBinder.Eval(Container.DataItem, "Address")%></td>       </tr>     </ItemTemplate>     <%--AlternatingItemTemplate描述交替输出行的另一种外观--%>     <AlternatingItemTemplate>       <tr bgcolor="#e8e8e8">         <td><asp:CheckBox ID="chkItem" runat="server" /></td>         <td><a href='<%# "View.aspx?id="+DataBinder.Eval(Container.DataItem, "CustomerID") %>' target="_blank">View</a></td>         <td><asp:Label ID="lblID" Text='<%# DataBinder.Eval(Container.DataItem, "CustomerID")%>' runat="server"></asp:Label></td>         <td><%# DataBinder.Eval(Container.DataItem, "CompanyName")%></td>         <td><%# DataBinder.Eval(Container.DataItem, "ContactName")%></td>         <td><%# DataBinder.Eval(Container.DataItem, "ContactTitle")%></td>         <td><%# DataBinder.Eval(Container.DataItem, "Address")%></td>       </tr>     </AlternatingItemTemplate>     <FooterTemplate>      </table>     </FooterTemplate> </asp:Repeater> <div style="background-color:#dedede; width:1006px;">     <asp:Button ID="btnDel" runat="server" Text="删除" OnClick="btnDel_Click" />    <asp:label ID="lblCurrentPage" runat="server"></asp:label>    <asp:HyperLink id="lnkFrist" runat="server">首页</asp:HyperLink>    <asp:HyperLink id="lnkPrev" runat="server">上一页</asp:HyperLink>    <asp:HyperLink id="lnkNext" runat="server">下一页</asp:HyperLink>    <asp:HyperLink id="lnkEnd" runat="server">尾页</asp:HyperLink> </div>     </form> </body> </html> 后台CS部分代码: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; public partial class Repeater : System.Web.UI.Page {     PagedDataSource PDS = new PagedDataSource();     private string ConnStr = ConfigurationManager.AppSettings["dbConnectionString"];     private string strsql = "";     protected void Page_Load(object sender, EventArgs e)     {         if (!this.Page.IsPostBack)         {             this.bind();         }     }     private void bind()     {         int TotalCount = 0;//总记录数         int TotalPage = 1; //总页数         SqlConnection conn = new SqlConnection(ConnStr);         conn.Open();         SqlDataAdapter da = new SqlDataAdapter("select CustomerID,CompanyName,ContactName,ContactTitle,Address from Customers order by CustomerID desc", conn);         DataSet ds = new DataSet();         da.Fill(ds, "Customers");         DataView dv = ds.Tables[0].DefaultView;         TotalCount = dv.Count;         PDS.DataSource = dv;         conn.Close();         PDS.AllowPaging = true;         PDS.PageSize = 20;         int CurPage;         if (Request.QueryString["Page"] != null)         CurPage=Convert.ToInt32(Request.QueryString["Page"]);         else         CurPage=1;         if (TotalCount == 0)             TotalPage = 1;         else         {             if (TotalCount % PDS.PageSize == 0)                 TotalPage = TotalCount / PDS.PageSize;             else                 TotalPage = TotalCount / PDS.PageSize + 1;         }         PDS.CurrentPageIndex = CurPage-1;         lblCurrentPage.Text = "共" + TotalCount.ToString() + "条记录 当前页:" + CurPage.ToString() + "/" + TotalPage;         lnkFrist.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=1";         if (!PDS.IsFirstPage)             lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage – 1);         if (!PDS.IsLastPage)             lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1);         lnkEnd.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + TotalPage;         Repeater1.DataSource=PDS;         Repeater1.DataBind();     }     protected void btnDel_Click(object sender, EventArgs e)     {         string ID = "";         for (int i = 0; i < this.Repeater1.Items.Count; i++)         {             CheckBox cbox = (CheckBox)this.Repeater1.Items[i].FindControl("chkItem");             if (cbox.Checked == true)             {                 if (ID == "")                 {                     ID = "'"+((Label)this.Repeater1.Items[i].FindControl("lblID")).Text+"'";                 }                 else                 {                     ID += "," + "'" + ((Label)this.Repeater1.Items[i].FindControl("lblID")).Text + "'";                 }             }         }         strsql = "delete from Customers where CustomerID in (" + ID + ")";         try         {             SqlConnection conn = new SqlConnection(ConnStr);             SqlCommand comm = new SqlCommand(strsql, conn);             comm.Connection.Open();             comm.ExecuteNonQuery();             comm.Connection.Close();             System.Web.HttpContext.Current.Response.Write("<script language=’javascript'>alert('刪除成功!');</script>");         }         catch (System.Data.SqlClient.SqlException E)         {             throw new Exception(E.Message);         }         finally         {             if (conn.State == ConnectionState.Open)                 conn.Close();         }         this.bind();     } } 转自:http://www.cnblogs.com/alanliu/archive/2008/02/25/914779.html