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

时间:2022-09-16 13:47:33

如何在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>