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