2013-11-01 4 views
0

У меня есть следующие GridView:Скрыть ячейки в GridView на основе другого столбца

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="SysInvoiceID" DataSourceID="SqlDataSource1"> 
      <Columns> 
       <asp:BoundField DataField="InvoiceID" HeaderText="SysInvoiceID" ReadOnly="True" SortExpression="SysInvoiceID" /> 
       <asp:BoundField DataField="BillMonth" HeaderText="BillMonth" SortExpression="BillMonth" /> 
       <asp:BoundField DataField="InvoiceDate" HeaderText="InvoiceDate" ReadOnly="True" SortExpression="InvoiceDate" /> 
       <asp:BoundField DataField="InvoiceNumber" HeaderText="InvoiceNumber" SortExpression="InvoiceNumber" /> 
       <asp:BoundField DataField="Net" HeaderText="Net" SortExpression="Net" /> 
       <asp:BoundField DataField="VAT" HeaderText="VAT" SortExpression="VAT" /> 
       <asp:BoundField DataField="Gross" HeaderText="Gross" SortExpression="Gross" /> 
       <asp:ButtonField CommandName="ViewInvoice" HeaderText=" " ShowHeader="True" Text="View" /> 
      </Columns> 
     </asp:GridView> 

Самый последний столбец (ButtonField) является один я создал себя просто включить текст «Вид» на каждой строке, которая при нажал, выведет счет-фактуру PDF.

Я не уверен, что это возможно, но мне было интересно, можно ли добавить какую-то проверку для этого столбца или что-то в этом роде, так что если столбец «InvoiceID» пуст, ссылка на соответствующую строку не появится.

Я чувствовал себя близко к этому, перейдя на разделенный вид в Visual Studio, а затем кнопку «Редактировать столбцы» в задачах GridView, но, как я уже сказал, я не уверен, что можно сделать это таким образом и, возможно, прибегать к простому кодированию.

Спасибо за помощь!

ответ

3

Использовать <TemplateField> вместо <ButtonField>

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:Button runat="server" Text="View" 
     Visible='<%# Eval("IsEmpty(InvoiceID)") %>' CommandName="ViewInvoice" /> 
    </ItemTemplate> 
</asp:TemplateField> 

И добавить метод на страницу, которая IsEmpty(string id) или какой тип ваш идентификатор, и просто проверить, чтобы увидеть, если он пуст первым.

Вы также можете добавить атрибут CommandArgument к Button, который позволит вам указать, какой аргумент ему будет.

+0

мне нужно использовать CommandName = «ViewInvoice» или остальная часть моего кода не будет работать. – JimmyK

+0

Сохранял мой день и открыл новый вопрос. Спасибо. – SearchForKnowledge

0

Используйте заполнитель ...

<asp:Placeholder runat="server" ID="plView" Visible="<%# Convert.ToBoolean(InvoiceID == null) ? false : true %>"> 
    <asp:ButtonField CommandName="ViewInvoice" HeaderText=" " ShowHeader="True" Text="View" /> 
</asp:Placeholder> 
Смежные вопросы