2015-06-04 5 views
2

Мне нужно скрыть столбец RevToDate в DataGrid для любого пользователя, который не является администратором. Как скрыть только этот столбец?Как скрыть столбец в DataGrid?

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

Но я не знаю, как скрыть столбец. Я не могу установить Visible в false в CSS, потому что он будет скрывать столбец от всех пользователей.

+0

Хорошая причина, по которой вы не можете сделать это в CSS, - это не тот, который вы упоминаете ... если вы делаете это в CSS, все пользователи имеют информацию в HTML, она просто не отображается, когда страница отображается, поэтому в основном все пользователи имеют доступ к информации, и вот что случилось ... –

ответ

3

Вы можете сделать это следующим образом.

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

Скроет ли это все столбцы? Я просто хочу скрыть второй (RevToDate) – user2026041

+0

@ 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 является индекс столбца в GridView.

+0

любая конкретная причина для ее маркировки? – waleedansari

+0

Я не сторонник, но все же хотел объяснить причину. 1] Кажется, вы скопировали и ввели код здесь, потому что он не совпадает с вопросом OP. 2] Что такое 'i' в' Columns [i] '3] OP хочет скрыть столбец на основе роли пользователя. Надеюсь, что это имеет смысл. –

+1

Значит, вы пытаетесь сказать, я должен помахать кормить ответ. ok – waleedansari

Смежные вопросы