2013-11-01 52 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)或任何輸入您的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>