Comment implémenter les mêmes fonctions d'édition, de mise à jour et de suppression que le contrôle GridView dans le contrôle Repeater ?
Ce qui suit est un exemple écrit sous vs.net2008 (C#). De admin10000.com
Code .cs backend
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 Frontend.aspx
<form id="form1" runat="server"> <asp:Repeater ID="rptUser" runat="server" onitemcommand="rptUser_ItemCommand" onitemdatabound="rptUser_ItemDataBound"> <HeaderTemplate> <table width="960" align="center" cellpadding="3" cellspacing="1" style="background-color: #ccc;"> <thead style="background-color: #eee;"> <tr> <th width="10%"> 用户ID </th> <th> 用户名 </th> <th width="22%"> 邮件 </th> <th width="20%"> QQ </th> <th width="15%"> 注册时间 </th> <th width="12%"> 操作 </th> </tr> </thead> <tbody style="background-color: #fff;"> </HeaderTemplate> <ItemTemplate> <asp:Panel ID="plItem" runat="server"> <tr style="text-align: center;"> <td> <%# DataBinder.Eval(Container.DataItem, "UserId")%> </td> <td> <%# DataBinder.Eval(Container.DataItem, "Name")%> </td> <td> <%# DataBinder.Eval(Container.DataItem, "Email")%> </td> <td> <%# DataBinder.Eval(Container.DataItem, "QQ")%> </td> <td> <%# DataBinder.Eval(Container.DataItem, "AddTime","{0:yyyy-MM-dd}")%> </td> <td> <asp:LinkButton runat="server" ID="lbtEdit" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "UserId")%>' CommandName="Edit" Text="编辑"></asp:LinkButton> <asp:LinkButton runat="server" ID="lbtDelete" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "UserId")%>' CommandName="Delete" Text="删除" OnClientClick="return confirm('确定要删除?')"></asp:LinkButton> </td> </tr> </asp:Panel> <asp:Panel ID="plEdit" runat="server"> <tr style="text-align: center;"> <td> <%# DataBinder.Eval(Container.DataItem, "UserId")%> </td> <td> <asp:TextBox ID="txtName" Text='<%# DataBinder.Eval(Container.DataItem,"Name") %>' runat="server"></asp:TextBox> </td> <td> <asp:TextBox ID="txtEmail" Text='<%# DataBinder.Eval(Container.DataItem,"Email") %>' runat="server"></asp:TextBox> </td> <td> <asp:TextBox ID="txtQQ" Text='<%# DataBinder.Eval(Container.DataItem,"QQ") %>' runat="server"></asp:TextBox> </td> <td> <%# DataBinder.Eval(Container.DataItem, "AddTime","{0:yyyy-MM-dd}")%> </td> <td> <asp:LinkButton runat="server" ID="lbtUpdate" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "UserId")%>' CommandName="Update" Text="更新"></asp:LinkButton> <asp:LinkButton runat="server" ID="lbtCancel" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "UserId")%>' CommandName="Cancel" Text="取消"></asp:LinkButton> </td> </tr> </asp:Panel> </ItemTemplate> <FooterTemplate> </tbody></table> </FooterTemplate> </asp:Repeater> </form>
Exemple de code de téléchargement : PageDemo.RAR
Documents associés : Implémentation de pagination du contrôle Repeater Méthode d'affichage des séparateurs à plusieurs intervalles dans Repeater Utiliser Repeater
pour l'imbrication dans RepeaterCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!