zoukankan      html  css  js  c++  java
  • 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;
             }

         }
  • 相关阅读:
    Android java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor ver
    Android EditText光标位置(定位到最后)
    Android EditText获取光标位置并插入字符删除字符
    Android 仿微信小视频录制
    Android仿微信小视频录制功能
    Android消息机制之实现两个不同线程之间相互传递数据相互调用
    Android Data Binding 技术
    Android中解析XML
    Android 怎样把光标放在EditText中文本的末尾处?
    Hadoop HBase概念学习系列之RowKey设计(二十九)
  • 原文地址:https://www.cnblogs.com/suncarry/p/1739630.html
Copyright © 2011-2022 走看看