2013-11-01 32 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>