zoukankan      html  css  js  c++  java
  • repeater实现删除按钮

    Repeater和DataGrid相比,repeater集成了较少的功能,高可定制化,repeater在客户端生成的html代码是非常干净的。但正是由于Repeater的简单,给我们带来了一定的开发难度。比如在datagrid中要删除一行数据,那么仅仅是一个linkbutton,然后在datagrid的delete command事件中编写删除代码,但是在repeater中,你几乎没有办法在那个事件中定位是哪行触发的删除事件。

    方法一、通过URL来传递参数

    后台代码

    protected void btnDelete_Click(object sender, CommandEventArgs e)
    {
         int itemId = int.Parse(e.CommandName);
    //得到需要删除的记录的编号(Id)
         string delSql = "delete from xy_action where actionid=" +
    itemId;//生成Sql 语句。
        
    //执行sql语句。}

    前台代码

    <asp:LinkButton id="btnDelete" CommandName='<%#DataBinder.Eval(Container, "ItemId") %>'OnCommand="btnDelete_Click"runat="server">
    删除
    </asp:LinkButton>

    <ItemTemplate>
       <div>
           <%#"<a href=\"File.aspx?Action=Delete&Id="+DataBinder.Eval(Container.DataItem,"ItemId") +"\">删除</a>" %>
       </div>
    </ItemTemplate>


    后台page_load()代码如下:

    if (Request.QueryString["Action"] == "Delete" && Request.QueryString["Delid"] != null)
    {
         string delId = int.Parse(Request.QueryString["Id"]); //得到需要删除的记录的编号(Id)
         string sql = "Delete From SomeTable Where ItemId=" + delId; //生成Sql 语句。
         //执行sql语句。
    }


    方法二、

    通过CommandName来传递编号

    //////////////////////////////////////////////

    Repeater控件用得不是很多,用起来显示数据非常方便,可以自定义显示的格式,很灵活。性能也要比GridView好多了,但是 Repeater没有封装"修改" "删除"等功能,可是有时候却需要这种功能却不想去用GridView。本人就遇到过这种情况,开始只想对数据进行显示没有删除的意思,但是后来考虑到还 需要一个删除功能,但分页都已经做好了,不想改用GridView。心想Repeater控件实现删除功能应该不麻烦吧!于是偷懒到百度一搜没找到。 困难就在于怎么取当前行的ID,GridView里可以设置DataKeyName的,在通过取每行的keyname值来取的,而Vs2005的 GridView更简单,添加删除完全封装了,不用写额外代码。但Repeater正为了灵活性已经没这属性了,问问群里高手。终于有解决办法了,通过删 除按钮Button的CommandName的绑定来取的ID值 CommandName='<%# Eval("ID") %>' ,然后一个 OnCommand="BtnDel_Click"响应事件,对之进行删除
    protected void BtnDel_Click(object sender, CommandEventArgs e)
        {
            int ID = Convert.ToInt32(e.CommandName);
            string delSql = "delete from mailbox where id=" + ID;
            try
            {
                DataUse.ExcuteNoqueryUser(delSql);
                JSUtil.Alert(this.Page, "删除成功!");
                Server.Transfer("Mail_Admin.aspx");
            }
            catch (Exception ex)
            {
                JSUtil.Alert(this.Page, ex.Message);
            }
        }
    上面方法的特别之处就是通过CommandName来绑定主键ID值再传给事件里的sql变量

  • 相关阅读:
    平分糖果——BZOJ 1045
    浙大月赛——ZOJ Problem Set 3574
    jsp 自定义标签的写法
    C#扩展方法(转贴)
    window mobile 防止系统休眠代码
    jbpm sql使用动态参数方法
    spring 多数据源配置实现
    原创jquery蒙版控件
    jbpm 错误解决方法
    cas server 配置
  • 原文地址:https://www.cnblogs.com/dachuang/p/2918493.html
Copyright © 2011-2022 走看看