zoukankan      html  css  js  c++  java
  • GridView的RowCommand事件中如何得到主键值及子控件

     GridView的RowCommand事件,当CommandName不是gridview 默认的三种命令名时,对表格的操作需触发RowCommand事件

    UI代码:

    代码
    <asp:GridView ID="grdResult" runat="server" CssClass="DataGrid_Container" AllowPaging="False"    
       AutoGenerateColumns
    ="False" BorderWidth="0"  OnRowDataBound="grdResult_RowDataBound" DataKeyNames="PlanId"  >   
       
    <RowStyle CssClass="DataGrid_Item" />   
      
       <Columns> 
           
    <asp:TemplateField  HeaderText="名称" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" >   
             
    <ItemTemplate  >                
              
    <asp:HyperLink ID="DocName" Text='<%# Eval("DocName") %>' runat="server"></asp:HyperLink>   
             
    </ItemTemplate>   
           
    </asp:TemplateField> 
         
    <asp:TemplateField HeaderText="执行操作">
           
    <ItemTemplate>
              
    <asp:LinkButton id="lbtToRun" runat="server" CommandName="cmdToRun" CommandArgument='<%# Eval("PlanID")%>'></asp:LinkButton>
              
    <asp:HiddenField id="hidUserName" runat="server" Value='<%#Eval("UserName") %>'></asp:HiddenField>
              
    </ItemTemplate>
            
    </asp:TemplateField>                           
         
    </Columns>                 
    </asp:GridView>  

    假如在C# RowCommand事件中,我们要找到当前行的隐藏域hidUserName的值和Gridview的DataKey,被注释部分代码是错误的方法,在能用RowCommand事件中

    代码

     protected void grdResult_RowCommand(object sender, GridViewCommandEventArgs e)
     {
         
    if (e.CommandName == "cmdToRun")//控制
          {
              
    //PlanID 为Key值
              
    //下面被注释掉的方法找不到隐藏域hidUserName
              
    //HiddenField hidUserName = (HiddenField)grdResult.SelectedRow.FindControl("hidUserName");            
              HiddenField hidUserName = (HiddenField)((Control)e.CommandSource).FindControl("hidUserName");
              
    //下面被注释掉的方法找不到DataKeys
              
    //string strid = grdResult.DataKeys[grdResult.SelectedIndex].Value.ToString();
              string strid = e.CommandArgument.ToString();
              
    //下面可以执行你要的操作
              
    AgentController.UpdateTable(hiduserName.value,strid);
            }
      }
  • 相关阅读:
    JAVA多线程之AQS
    LRU算法
    JAVA设计之SPI
    JAVA多线程之CAS
    操作系统之中断处理
    计算机领域思想
    操作系统之I/O
    操作系统之虚拟内存
    Mysql事务原理
    Mysql添加索引
  • 原文地址:https://www.cnblogs.com/fredx/p/1687278.html
Copyright © 2011-2022 走看看