Repeater控件实现编辑、更新、删除等操作示例代码

  如何在Repeater控件中实现像GridView控件一样的编辑、更新、删除功能?

  

复制代码 代码如下:

  protected void Page_Load(object sender, EventArgs e)

  {

  if (!Page.IsPostBack)

  {

  BindGrid();

  }

  }

  private void BindGrid()

  {

  string strSQL = "SELECT * FROM [User]";

  OleDbConnection objConnection = new OleDbConnection(GetStrConnection());

  objConnection.Open();

  OleDbCommand objCommand = new OleDbCommand(strSQL, objConnection);

  OleDbDataReader reader = objCommand.ExecuteReader(CommandBehavior.CloseConnection);

  rptUser.DataSource = reader;

  rptUser.DataBind();

  }

  protected void rptUser_ItemDataBound(object sender, RepeaterItemEventArgs e)

  {

  if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

  {

  System.Data.Common.DbDataRecord record = (System.Data.Common.DbDataRecord)e.Item.DataItem;

  int userId = int.Parse(record["UserId"].ToString());

  if (userId != id)

  {

  ((Panel)e.Item.FindControl("plItem")).Visible = true;

  ((Panel)e.Item.FindControl("plEdit")).Visible = false;

  }

  else

  {

  ((Panel)e.Item.FindControl("plItem")).Visible = false;

  ((Panel)e.Item.FindControl("plEdit")).Visible = true;

  }

  }

  }

  protected void rptUser_ItemCommand(object source, RepeaterCommandEventArgs e)

  {

  if (e.CommandName == "Edit")

  {

  id = int.Parse(e.CommandArgument.ToString());

  }

  else if (e.CommandName == "Cancel")

  {

  id = -1;

  }

  else if (e.CommandName == "Update")

  {

  string name = ((TextBox)this.rptUser.Items[e.Item.ItemIndex].FindControl("txtName")).Text.Trim();

  string email = ((TextBox)this.rptUser.Items[e.Item.ItemIndex].FindControl("txtEmail")).Text.Trim();

  string qq = ((TextBox)this.rptUser.Items[e.Item.ItemIndex].FindControl("txtQQ")).Text.Trim();

  string strSQL = "UPDATE [User] SET Name=@Name,Email=@Email,QQ=@QQ WHERE UserId=@UserId";

  OleDbConnection objConnection = new OleDbConnection(GetStrConnection());

  OleDbCommand objCommand = new OleDbCommand(strSQL, objConnection);

  objCommand.Parameters.Add("@Name", OleDbType.VarWChar);

  objCommand.Parameters["@Name"].Value = name;

  objCommand.Parameters.Add("@Email", OleDbType.VarWChar);

  objCommand.Parameters["@Email"].Value = email;

  objCommand.Parameters.Add("@QQ", OleDbType.VarWChar);

  objCommand.Parameters["@QQ"].Value = qq;

  objCommand.Parameters.Add("@UserId", OleDbType.Integer);

  objCommand.Parameters["@UserId"].Value = int.Parse(e.CommandArgument.ToString());

  objConnection.Open();

  objCommand.ExecuteNonQuery();

  objConnection.Close();

  }

  else if (e.CommandName == "Delete")

  {

  string strSQL = "DELETE * FROM [User] WHERE UserId=@UserId";

  OleDbConnection objConnection = new OleDbConnection(GetStrConnection());

  OleDbCommand objCommand = new OleDbCommand(strSQL, objConnection);

  objCommand.Parameters.Add("@UserId", OleDbType.Integer);

  objCommand.Parameters["@UserId"].Value = int.Parse(e.CommandArgument.ToString());

  objConnection.Open();

  objCommand.ExecuteNonQuery();

  objConnection.Close();

  }

  BindGrid();

  }

  private string GetStrConnection()

  {

  return "Provider=Microsoft.Jet.OleDb.4.0;data source=" + Server.MapPath("~/Database/test.mdb");

  }

  <</CODE>form id="form1" runat="server">

  <</CODE>asp:Repeater ID="rptUser" runat="server" onitemcommand="rptUser_ItemCommand"

  onitemdatabound="rptUser_ItemDataBound">

  <</CODE>HeaderTemplate>

  <</CODE>table width="960" align="center" cellpadding="3" cellspacing="1" style="background-color: #ccc;">

  <</CODE>thead style="background-color: #eee;">

  <</CODE>tr>

  <</CODE>th width="10%">

  用户ID

  </</CODE>th>

  <</CODE>th>

  用户名

  </</CODE>th>

  <</CODE>th width="22%">

  邮件

  </</CODE>th>

  <</CODE>th width="20%">

  QQ

  </</CODE>th>

  <</CODE>th width="15%">

  注册时间

  </</CODE>th>

  <</CODE>th width="12%">

  操作

  </</CODE>th>

  </</CODE>tr>

  </</CODE>thead>

  <</CODE>tbody style="background-color: #fff;">

  </</CODE>HeaderTemplate>

  <</CODE>ItemTemplate>

  <</CODE>asp:Panel ID="plItem" runat="server">

  <</CODE>tr style="text-align: center;">

  <</CODE>td>