【问题标题】:How to hide a column in a DataGrid?如何隐藏 DataGrid 中的列?
【发布时间】:2015-08-18 21:11:09
【问题描述】:

我需要为任何非管理员用户隐藏DataGrid 中的RevToDate 列。如何仅隐藏此列?

 <asp:DataGrid runat="server" CssClass="tblResults" OnItemDataBound="dgList_ItemCreated" AllowSorting="true" OnSortCommand="dgCustomer_Sort" ID="dgCustomers" DataKeyField="ID" AutoGenerateColumns="false">
            <HeaderStyle CssClass="tblResultsHeader" />
            <AlternatingItemStyle BackColor="#EEEEEE" />
            <Columns>
                <asp:HyperLinkColumn ItemStyle-CssClass="loading" DataNavigateUrlFormatString="Customer.aspx?CustID={0}" DataNavigateUrlField="ID" DataTextField="AccountCode" HeaderText="A/C Code" SortExpression="AccountCode"></asp:HyperLinkColumn>
                <asp:BoundColumn DataField="CurrencyDesc" HeaderText="Currency" SortExpression="CurrencyDesc"></asp:BoundColumn>
                <asp:BoundColumn DataField="RevToDate" HeaderText="Rev To Date (Net)" SortExpression="RevToDate"></asp:BoundColumn>
                <asp:BoundColumn DataField="CreditLimitAmount" HeaderText="Credit Limit" SortExpression="CreditLimitAmount"></asp:BoundColumn>
                <asp:BoundColumn DataField="DiscountReviewDate" HeaderText="Discount Review Date" SortExpression="DiscountReviewDate" Visible="false"></asp:BoundColumn>
            </Columns>
 </asp:DataGrid

我正在使用此代码隐藏某些项目:

 if (!CurrentUser.IsInRole("Admin"))
    {
        btnDelete.Visible = false;
        btnUpload2.Visible = false;
    }

但我不确定如何隐藏该列。我不能在 CSS 中将 Visible 设置为 false,因为它会对所有用户隐藏该列。

【问题讨论】:

  • 你不能用 CSS 做的充分理由不是你提到的......如果你用 CSS 做,所有用户都有 HTML 中的信息,它根本不显示什么时候页面被渲染,所以基本上所有用户都可以访问信息,这就是问题所在......

标签: c# css asp.net visual-studio datagrid


【解决方案1】:

你可以这样做。

 if (!CurrentUser.IsInRole("Admin"))
 {
     this.dgCustomers.Columns[2].Visible = false;
     btnDelete.Visible = false;
     btnUpload2.Visible = false;
 }

【讨论】:

  • 这会隐藏所有列吗?我只想隐藏第二个(RevToDate)
  • @user2026041 您需要在Columns[2] 中提及数字以隐藏特定列。
【解决方案2】:

使其在 aspx 页面中可见,例如:

<asp:BoundColumn visible="true" DataField="RevToDate" HeaderText="Rev To Date (Net)" SortExpression="RevToDate"></asp:BoundColumn>

然后从代码中使其不可见:

if (!CurrentUser.IsInRole("Admin"))
        {
         this.gdCustomers.Columns[2].Visible = false;
         btnDelete.Visible = false;
         btnUpload2.Visible = false;
        }

其中 2 是网格视图中的列索引。

【讨论】:

  • 我不是反对者,但仍想解释原因。 1]您似乎在这里复制并粘贴了代码,因为它与 OP 问题不匹配。 2] Columns[i] 中的 i 是什么 3] OP 希望根据用户角色隐藏列。希望它有意义。
  • 意思是你想说,我应该用勺子喂答案。好的
  • @RahulNikate 现在好点了吗?
  • 不。我已经说得更清楚了,或者我也可以通过为 aspx 编写代码来说得很清楚。总勺子饲料。
猜你喜欢
  • 1970-01-01
  • 2017-07-31
  • 2021-02-09
  • 2010-11-07
  • 2011-10-15
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多