Grdiview中RowCommand中取行号,及多个ButtonField实现多种选择

1.RowCommand中取行号

可以有两种实现方法

(1)前台绑定。

< asp:TemplateField ItemStyle - HorizontalAlign = " center "  ItemStyle - Width = " 80px " >
< ItemTemplate >
    
< asp:Button ID = " freezeButton "  Text = " 冻结 "  runat = " server "  CommandName = " freeze "  CommandArgument = ' <%# DataBinder.Eval(Container,"RowIndex") %> '  BorderStyle = " Groove "  OnClientClick = " javascript:return confirm('确定?'); "    />
</ ItemTemplate >

</asp:TemplateField>

为了显示好看可以用<asp:LinkButton.../>代替<asp:Button.../>

或用

CommandArgument = ' <%# Container.DataItemIndex %> '

(2)后台绑定

在girdview的RowDataBound事件中

// 绑定时,将行号绑定到 button 上。
LinkButton bt  =   new  LinkButton();
bt 
=  (LinkButton)e.Row.Cells[ 7 ].FindControl( " btnLZ " );
bt.CommandArgument 
=  e.Row.RowIndex.ToString();

 使用时:

protected   void  grdMember_RowCommand( object  sender, GridViewCommandEventArgs e)
    
{
        
//取INdex
        int index = Convert.ToInt32(e.CommandArgument);
        DataKey key 
= grdMember.DataKeys[index];
        
string tt = key.Value.ToString();
        
        
//判断哪个按钮
        
//switch (e.CommandName.ToString())
        
//{
        
//    case "DD":
        
//       DoSomething();
        
//        break;
        
//    case "LZ":
        
//        DoSomethingElse();
        
//        break;
            
        
//}

    }

 

 

都是将Index绑定到Button的CommandArgument上

 

2. 多个ButtonField实现多种选择

 有时候仅有一个SelectButton不能满足需求,但又不能添加多个SelectButton,解决办法:用多个ButtonField实现.

 前台代码:

 

< asp:TemplateField ShowHeader = " False " >
    
< ItemTemplate >
       
< asp:LinkButton ID = " btnLZ "  runat = " server "  CausesValidation = " false "  CommandName = " LZ "
                            Text
= " 离职 " ></ asp:LinkButton >
    
</ ItemTemplate >
</ asp:TemplateField >

< asp:TemplateField ShowHeader = " False " >
    
< ItemTemplate >
         
< asp:LinkButton ID = " btnDD "  runat = " server "  CausesValidation = " false "  CommandName = " DD "
                            Text
= " 调动 " ></ asp:LinkButton >
    
</ ItemTemplate >
</ asp:TemplateField >

 重要的是CommandName=""

下面就可以在Girdview的RowCommand控件中判断是按的是哪个按钮了

protected   void  grdMember_RowCommand( object  sender, GridViewCommandEventArgs e)
    
{
        
//取INdex
        
//int index = Convert.ToInt32(e.CommandArgument);
        
//DataKey key = grdMember.DataKeys[index];
        
//string tt = key.Value.ToString();
        
        
//判断哪个按钮
        switch (e.CommandName.ToString())
        
{
            
case "DD":
                DoSomething();
                
break;
            
case "LZ":
                DoSomethingElse();
                
break;
            
        }


    }

 

 最终效果:


 

你可能感兴趣的:(command)