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;
            
        }


    }

 

 最终效果:


 

posted on 2008-07-26 09:05  psychengchao  阅读(1976)  评论(0)    收藏  举报