获取GridView中RowCommand的当前选中行的索引或主

获取GridView中RowCommand的当前选中行的索引或主
  1. 获取GridView中RowCommand的当前索引行 前台添加一模版列,里面添加一个LinkButton
  2. 前台 (如果在后台代码中用e.CommandArgument取值的话前台代码就必须在按钮中设置CommandArgument的值,值为绑定的数据库字段
  3. <asp:TemplateField HeaderText= "操作" >
  4.     <ItemTemplate>
  5.         <asp:LinkButton ID= "LinkButton1"  runat= "server"  CommandName= "QianRu"  
  6.         CommandArgument= '<%# Eval("Id") %>' >签入</asp:LinkButton>  
  7.         <asp:LinkButton ID= "LinkButton2"  runat= "server"  CommandName= "QianChu" >签出</asp:LinkButton>
  8.     </ItemTemplate>
  9. </asp:TemplateField>
  10. 后台
  11. 在GridView里已经设置了LinkButton为事件处理按钮,将通过以下方法获取索引
  12. protected   void  gv_Company_RowCommand( object  sender, GridViewCommandEventArgs e){
  13.          if  (e.CommandName ==  "QianRu" )
  14.     {      //取ID的值方法一   
  15.               GridViewRow drv = ((GridViewRow)(((LinkButton)(e.CommandSource)).Parent.Parent));  //此得出的值是表示那行被选中的索引值
  16.               inf id=Convert.ToInt32(GridView1.DataKeys[drv.RowIndex].Value);  //此获取的值为GridView中绑定数据库中的主键值
  17.            //取ID的值方法二   
  18.               GridViewRow drv = ((GridViewRow)(((LinkButton)(e.CommandSource)).Parent.Parent));  //此得出的值是表示那行被选中的索引值
  19.                //此获取的值为GridView中绑定数据库中的主键值,取值方法是选中的行中的第一列的值,drv.RowIndex取得是选中行的索引
  20.            int  id = Convert.ToInt32(GridView1.Rows[drv.RowIndex].Cells[0].Text); 
  21.            //取ID的值方法三  
  22.            //因为在客户端中就已经将LinkButton的CommandArgument与主键Id给绑定了所以在此可以直接用e.CommandArgument得出主键ID的值
  23.            int  id = Convert.ToInt32(e.CommandArgument.ToString()); 
  1. //取ID的值方法四
  2.            //此方法不需在模板列中设置CommandArgument的值
  3.            string  index=e.CommandArgument.ToString();  //那行被选中,取出选中行的索引
  4.            int  id=Convert.ToInt32(GridView1.Rows[Convert.ToInt32(index)].Cells[0].Text);
  1.         }
  2.     }
  3. 还有一种就是我们并不需要知道当前点击的是第几行,可以用以下方法实现要求: 
  4. <ItemTemplate> 
  5.       <asp:LinkButton ID= "LinkButton1"  runat= "server"  CommandArgument= ' <%# Eval("field1") %>'  
  6.       CommandName= "play"  Text= ' <%# Eval("field2") %>' > </asp:LinkButton> 
  7. </ItemTemplate> 
  8. 上面这个LinkButton,Text绑定了字段2, CommandArgument绑定了字段1 
  9. 那么, 
  10. protected    void   GridView1_RowCommand( object   sender,  GridViewCommandEventArgs  e) 
  11.      if (e.CommandName= "play" )
  12.     {
  13.         LinkButton lb = (LinkButton)e.CommandSource; 
  14.          string   a  =  lb.Text; //这里可以获得点击行字段field2的值 
  15.          string  b = e.CommandArgument; //这里可以获得点击行字段field1的值
  16.     }
  17. }
  18. 或:
  19. 如果是使用模板列,可以把数据的任意一列绑定到按钮的CommandArgument,如下: 
  20. <asp:TemplateField> 
  21. <ItemTemplate> 
  22. <asp:Button runat= "server"  CommandArgument= '<%# Eval("id") %>'  Text= "Button"  /> 
  23. </ItemTemplate> 
  24. </asp:TemplateField> 
  25. 一般可以绑定到主键列,这样可以在RowCommand通过e.CommandArgument获取当前行的主键,也便于进行其他操作 
  26. 如果是要获取行索引,比较麻烦一点,还是那个Button1,在GridView的RowDataBound事件中如下: 
  27. Button btn = (Button)e.Row.FindControl( "Button1" ); 
  28. if  (btn !=  null
  29. btn.CommandArgument = e.Row.RowIndex.ToString(); 
  30. 这样就可以在RowCommand中通过  int  rowId=Convert.ToInt32(e.CommandArgument.ToString()) 获取行索引了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值