GridView行中按钮的使用

 

GridView行中按钮的使用

web项目的过程中,特别是开发ASP.NET应用程序,经常会用到数据显示空间GridView控件,然后需要每行的结尾放置一个buttonlinkbutton来对当前行进行操作。如下图,添加一个删除按钮,当点击按钮时删除所在行的记录。

本文将提供5种常用的方法来实现行记录的删除操作,并由此来了解下GridView中按钮的使用。

方法1

GridView控件中放置一个模板列,往里面放置一个按钮,并用主键值绑定按钮,代码如下:

<asp:TemplateField HeaderText="方法1">

    <ItemTemplate>

        <asp:Button ID="btnDelOne" runat="server" CommandArgument='<%# Eval("ID") %>'

                            οnclick="btnDelOne_Click" Text="删除" />

    </ItemTemplate>

</asp:TemplateField>

并按钮添加OnClick点击事件处理程序:

protected void btnDelOne_Click(object sender, EventArgs e)

{

         Button btn=(Button)sender;//注意控件类型的转换

    string id=btn.CommandArgument;//获取得到控件绑定的对应值

    DeleteByID(id);//DeleteByID是一个根据ID进程删除的函数

}

方法2

打开GridView的智能标签——>编辑列,添加一个ButtonField,并设置相应的属性值得,如图:

注意CommandName属性在此把他设置为del,然后给GridView空间添加RowCommand事件,表示GridView内生成事件时激发。其事件处理为:

protected void grvData_RowCommand(object sender, GridViewCommandEventArgs e)

{

    //"删除"按钮也会调用此函数

    if (e.CommandName == "del")

{

       //注意此时的CommandArgument表示的是所在行的索引。

        int index=int.Parse(e.CommandArgument.ToString());

        string id = grvData.Rows[index].Cells[0].Text ;

        DeleteByID(id);

    }

}

方法3

方法3跟方法2很类似,其实其底层原理是一致的,方法3中的按钮可以理解成是方法2种按钮的一个具体化(让按钮更加明确是用来做什么的)。其设置如图:

为其添加按钮事件,此事件为GridView空间RowDeleting事件,表示对数据源执行Delete命令时激发。如果不写此事件而使用本按钮,则在使用过程中会报错。为此添加时间处理为:

protected void grvData_RowDeleting(object sender, GridViewDeleteEventArgs e)

{

    string id = grvData.Rows[e.RowIndex].Cells[0].Text;

    DeleteByID(id);

}

注意这与方法2有所区别,方法2是通过按钮的e.CommandArgument去获取行索引,而本方法中则直接使用GridViewDeleteEventArgs e提供的行索引获取得到值。且方法2的按钮的CommandName是我们自定义的del,而本方法中则是Delete,微软已经帮我们预先设置好了的一个值,所以在其激发的时候它会先执行方法2中的RowCommand事件,然后再执行RowDeleting事件,所以也可以把方法2和方法3进行整合成一个事件处理函数,但RowDeleting也必须的有,只是里面什么内容都不用写。

方法4

方法3和方法4基本配置和使用基本一致,只是当初设计他们时只是为了更好的区别他们所执行的操作。本方法选择添加“选择”按钮,如图:

其事件处理函数类似方法3,如下:

protected void grvData_SelectedIndexChanged(object sender, EventArgs e)

{

    //方法1,直接过去数字键的值

    //string id = grvData.SelectedDataKey.Value.ToString();

    //方法2,获取选中行的索引,在通过索引获取值

    string id = grvData.Rows[grvData.SelectedIndex].Cells[0].Text;

    DeleteByID(id);

}

方法4处理房方法里也提供2种方法用于获得相应的值。一个跟方法3种类型都是获取所在行的行索引。方法4还有一个方法是直接获取所在行的数字键的值。方法4执行的时候也会调用RowCommand,只是此时CommandName值变成Select

方法5

方法5是比较传统的做法,就是给每行添加一个链接,在链接中传递一个url参数,在删除页面获取url参数并执行相应的删除操作这个比较简单就不再赘述。

 

下面给出4种方法的调用对比情况:

 

OnClick

RowCommand

RowDeleting

SelectedIndexChanged

方法1

 

 

 

方法2

 

 

 

方法3

 

 

方法4

 

 

○表示会掉用,我们发现方法3和方法4都会进行2次调用,而且从设计方法3方法4中,要使用微软提供便捷按钮,除了激发RowCommand处理方法外,还会激发所对应的特殊操作,如删除和选择等等。基本做还是建议使用方法1,方法2,方法5也是一种很不错选择。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值