asp.net gridview的Rowcommand命令中获取行索引的方法总结

 更新时间:2010年05月20日 01:05:05   转载 作者:  
asp.net gridview的Rowcommand命令中获取行索引的方法总结,需要的朋友可以参考下。
一、通过命令源获取当前行索引。

方法比较多, GridView 的 Command 事件中无法象 DataGrid 那样直接获取行,

法1,
GridViewRow drv = ((GridViewRow)(((Button)(e.CommandSource)).Parent.Parent));//CommandSource 引起事件的命令源,(疑问,根据MSDN说的是GridView,如果这样的话这样操作是错误的,但我得到的确实正确的,那说明得到的是BUtton控件,等待以后查证).
drv.RowIndex


二、通过在RowDataBound事件中把行索引绑定到控件的CommandArgument

由于事件参数 GridViewCommandEventArgs 并不公开Row属性指示当前行,(DataGridCommandEventArgs 公开 Item 属性以获取当然 DataGridItem,不知 ASP.NET Team 是如何考虑这一设计的),因此需要一点“技巧”来获取此属性。

其实这是一个早就已知的问题,鉴于CSDN里面每每有人疑惑,这里稍微整理下,便于参阅:

复制代码 代码如下:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int rowIndex = -1;
GridViewRow row = null;
switch (e.CommandName) ...{
case "Command1": // 模板列
// 对于模板列内的按钮,我们需要显示绑定行索引到按钮的 CommandArgument 属性
// 以获取触发事件的行信息
rowIndex = Convert.ToInt32(e.CommandArgument);
row = GridView1.Rows[rowIndex];
DisplayInfo(row, e.CommandName);
// your codes
//
break;
case "Command2": // 模板列
// 同样处于模板列中,但不采用 Command1 方式,而是通过 NamingContrainer 属性
// 直接获取当前的 GridViewRow
Control cmdControl = e.CommandSource as Control; // 表示触发事件的 IButtonControl,保持统一性并便于后续操作,我们这里直接转化为控件基类 Control
row = cmdControl.NamingContainer as GridViewRow;
DisplayInfo(row, e.CommandName);
// your codes
//
break;
case "Command3": // 绑定列
// 对于 ButtonField 列,数据源控件内部自动以适当的项索引值填充 CommandArgument 属性。
// 而无需我们显示绑定其 CommandArgument 属性
// 注意,我们这里无法采用 Command2 的方式,对于 BUttonField 触发的事件,
// GridViewCommandEventArgs.CommandSource 表示的包含此按钮的 GridView
rowIndex = Convert.ToInt32(e.CommandArgument);
row = GridView1.Rows[rowIndex];
DisplayInfo(row, e.CommandName);
// your codes
//
break;
}
}

相关文章

  • Visual Studio Debug实战教程之断点操作

    Visual Studio Debug实战教程之断点操作

    众所周知断点对于Visual Studio调试过程是十分重要的,断点的设置也是为了更好的进行调试。下面这篇文章主要给大家介绍了关于Visual Studio Debug实战教程之断点操作的相关资料,需要的朋友可以参考下
    2018-09-09
  • .net中string无重复数字的实现方法

    .net中string无重复数字的实现方法

    今天做项目的时候,用js获得了勾选的checkbox放在了hiddenfile里,然而hiddenfile的值变成了类似:“1,1,1,3,3,2,4,5,5,5”,后台获取的时候,只保留不重复的数字,于是想了一想;直接上代码了。
    2013-04-04
  • asp.net获取ListView与gridview中当前行的行号

    asp.net获取ListView与gridview中当前行的行号

    这篇文章主要介绍了asp.net获取ListView与gridview中当前行的行号,实例分析了asp.net针对ListView与gridview获取行号的实现技巧,需要的朋友可以参考下
    2016-01-01
  • ASP.NET页面请求处理介绍

    ASP.NET页面请求处理介绍

    ASP.NET页面请求处理介绍,需要的朋友可以参考下
    2012-12-12
  • asp.net CommunityServer中的wwwStatus

    asp.net CommunityServer中的wwwStatus

    最近不得不对这个论坛进行研究,以适应后面的发展,现在同事研究太吃力了,以后改些东西,估计又要...打开web项目中的communityserver.config发现一个有趣的地方。
    2009-03-03
  • mvc下,3种窗口弹出设置的方法

    mvc下,3种窗口弹出设置的方法

    想做页面美化,特别是在一个页面中,只占了很小一块的页面,想做成弹出窗口样式,稍微总结了下:
    2013-07-07
  • .net decimal保留指定的小数位数(不四舍五入)

    .net decimal保留指定的小数位数(不四舍五入)

    大家都知道decimal保留指定位数小数的时候,.NET自带的方法都是四舍五入的。那么如何让decimal保留指定位数小数的时候不四舍五入呢,下面通过这篇文中的示例代码来一起看看吧。
    2016-12-12
  • ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享

    ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享

    这篇文章主要介绍了ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享,有需要的朋友可以参考一下
    2013-12-12
  • .NET图像界面按钮的clicked事件浅谈

    .NET图像界面按钮的clicked事件浅谈

    在.NET图像界面开发中最常见的一个事件大概就是按钮的clicked事件了,当点击图形界面的按钮时,就会调用一个与这个事件相关的方法对这个事件进行响应,做一些相关操作。
    2013-04-04
  • ASP.NET内置对象之Application对象

    ASP.NET内置对象之Application对象

    Application对象是HttpApplicationState类的一个实例,它可以产生一个所有Web应用程序都可以存取的变量,这个变量的可以存取范围涵盖全部使用者,也就是说只要正在使用这个网页的程序都可以存取这个变量。
    2008-09-09

最新评论