【问题标题】:How to hide column from gridview on edit click?如何在编辑单击时从gridview隐藏列?
【发布时间】:2019-01-03 08:59:39
【问题描述】:

“我正在使用 asp.net gridview,当用户单击编辑按钮时,下拉列表列应该隐藏。我应该怎么做才能让它隐藏?我附上了下面的代码。gridview 包含学生数据,gridview 将显示根据用户选择的分类数据记录。我尝试在 OnRowDataBound 上隐藏该列,但它对我不起作用。有什么方法可以隐藏特定列 OnRowEditing 事件”

 <asp:GridView ID="GridView1" runat="server"  DataKeyNames="id"  
                    CssClass="table table-bordered table-striped" 
  AutoGenerateColumns="False"
                 HorizontalAlign="Center" CellPadding="4" 
                    EmptyDataText="No Record Found....."    
  onrowcancelingedit="GridView1_RowCancelingEdit" 
                 onrowediting="GridView1_RowEditing"  
                    onrowupdating="GridView1_RowUpdating" 
  ForeColor="#333333" 
                    GridLines="None" 
  OnPageIndexChanging="OnPageIndexChanging" PageSize="15" 
  AllowPaging="true" >

            <PagerSettings Position="Bottom" />                       
                <AlternatingRowStyle BackColor="White" 
  ForeColor="#284775" 
   />
             <Columns>                                         


               <asp:TemplateField>                      
               <ItemTemplate>            
               <asp:CheckBox ID="chkRow" runat="server"/>
               </ItemTemplate>
               </asp:TemplateField>   

                   <asp:TemplateField HeaderText="Sr.No">
                    <ItemTemplate>
                        <asp:Label ID="lblId" runat="server" 
     Text='<%#Container.DataItemIndex+1%>'></asp:Label>
                    </ItemTemplate>
                   </asp:TemplateField>

                        <asp:TemplateField HeaderText="Name">
                        <ItemTemplate>
                        <asp:Label ID="lblFullName" runat="server" 
    Text='<%#Eval("Name") %>'></asp:Label>
                        </ItemTemplate>
                        </asp:TemplateField>     

                        <asp:TemplateField HeaderText="Ack">
                        <ItemTemplate>


                                 <edititemtemplate>
                                     <asp:DropDownList 
              ID="Drpacknowledgement" AutoPostBack="True"

     onselectedindexchanged="Drpacknowledgement_SelectedIndexChanged" 
   runat="server">                                
                        <asp:ListItem>--Select--</asp:ListItem>
                        <asp:ListItem>Received</asp:ListItem>
                        <asp:ListItem>Reject</asp:ListItem>                               
                        </asp:DropDownList>

                              </edititemtemplate>


                        </ItemTemplate>

                        </asp:TemplateField>

                   <asp:TemplateField HeaderText="Edit/Update">
                    <ItemTemplate>
                        <asp:LinkButton ID="LkB1" runat="server" 
  CommandName="Edit">Edit</asp:LinkButton>                           
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:LinkButton ID="LkB2" runat="server" 
   CommandName="Update">Update</asp:LinkButton>
                        <asp:LinkButton ID="LkB3" runat="server" 
   CommandName="Cancel">Cancel</asp:LinkButton>
                    </EditItemTemplate>                          
                  </asp:TemplateField>

                  </Columns>



             </asp:GridView>  


   Codebehind:
   protected void GridView1_RowEditing(object sender, 
   GridViewEditEventArgs 
   e)
    {
        try
        {
            string Id = 
            GridView1.DataKeys[e.NewEditIndex].Value.ToString();
            GridView1.EditIndex = e.NewEditIndex;
            ViewState["Id"] = Id;
            EditRecord();
        }
        catch (Exception ex)
        {

        }
    }   

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    使用 Rowcommand 进行按钮点击。

    https://www.codeproject.com/Tips/564619/%2FTips%2F564619%2FExample-of-gridview-rowcommand-on-Button-Click

     <asp:GridView ID="GridView1" runat="server"  DataKeyNames="id"  
                            CssClass="table table-bordered table-striped" 
          AutoGenerateColumns="False"
                         HorizontalAlign="Center" CellPadding="4" 
                            EmptyDataText="No Record Found....."    
          onrowcancelingedit="GridView1_RowCancelingEdit" 
                         onrowediting="GridView1_RowEditing"  
                            onrowupdating="GridView1_RowUpdating" 
          ForeColor="#333333" 
                            GridLines="None" 
          OnPageIndexChanging="OnPageIndexChanging" PageSize="15" 
           OnRowCommand="GridView1_RowCommand"
          AllowPaging="true" >
    
                    <PagerSettings Position="Bottom" />                       
                        <AlternatingRowStyle BackColor="White" 
          ForeColor="#284775" 
           />
    
             <asp:TemplateField HeaderText="Edit/Update">
                                <ItemTemplate>
                                    <asp:LinkButton ID="LkB1" runat="server" CommandName="Edit"
              CommandName="Edit">Edit</asp:LinkButton>                           
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:LinkButton ID="LkB2" runat="server" 
               CommandName="Update">Update</asp:LinkButton>
                                    <asp:LinkButton ID="LkB3" runat="server" 
               CommandName="Cancel">Cancel</asp:LinkButton>
                                </EditItemTemplate>                          
                              </asp:TemplateField>
    
    
         protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
            {
          if (e.CommandName == "Edit")
                {
        //do your stuff here
     GridView1.Columns[5].Visible = false;
        }
    
        }
    

    【讨论】:

      【解决方案2】:

      如果我正确理解您的问题,我认为这会解决问题

      protected void GridView1_DataBound(object sender, EventArgs e)
          {
              if (GridView1.EditIndex > -1)
                  GridView1.Columns[5].Visible = false;
              else
                  GridView1.Columns[5].Visible = true;
          }
      

      【讨论】:

        猜你喜欢
        • 2014-12-24
        • 1970-01-01
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-27
        • 1970-01-01
        • 2012-10-28
        相关资源
        最近更新 更多