• 技术文章 >后端开发 >C#.Net教程

    Repeater控件实现编辑、更新、删除操作

    巴扎黑巴扎黑2017-04-30 10:22:51原创3517
    如何在Repeater控件中实现像GridView控件一样的编辑、更新、删除功能?

    下面给出示例 vs.net2008(C#)下编写。来自 admin10000.com

    后台.cs代码

    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");
    }

    前台.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>&nbsp;&nbsp;
                        <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>&nbsp;&nbsp;
                        <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>

    下载代码示例:

    php入门到就业线上直播课:进入学习

    PageDemo.RAR

    相关文档: Repeater控件的分页实现 Repeater多行间隔显示分隔符的方法 Repeater中嵌套使用Repeater

    以上就是Repeater控件实现编辑、更新、删除操作的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    上一篇:Repeater多行间隔显示分隔符的方法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• c语言中源文件编译后生成什么文件• c语言标识符有哪些类型• C#中GDI+编程10个基本技巧二• ASP.NET使用Ajax如何返回Json对象的方法具体介绍• 应用绝对路径与相对路径
    1/1

    PHP中文网