首页 > 解决方案 > 如何在编辑单击时从gridview隐藏列?

问题描述

“我正在使用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

解决方案


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

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

推荐阅读