2016-05-17 6 views
0

お客様には少し問題があります。 次のように私は、いくつかの列を持つGridViewコントロールを持っている:データが空の場合は、テンプレートフィールド内にデータまたはボタンを動的に挿入してください。

<asp:GridView> 
     <Columns> 
      <asp:CommandField SelectText="+" ShowSelectButton="True" /> 
      <asp:BoundField ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" DataField="TE_ID_ANALYSIS" HeaderText="TE_ID_ANALYSIS" ReadOnly="True" SortExpression="TE_ID_ANALYSIS"/> 
      <asp:BoundField DataField="DATA" HeaderText="DATA" ReadOnly="True" SortExpression="DATA" /> 
      <asp:BoundField DataField="TE_NDOC" HeaderText="NUMERO" SortExpression="TE_NDOC" /> 
      <asp:BoundField DataField="RIFERIMENTO" HeaderText="RIFERIMENTO" ReadOnly="True" SortExpression="RIFERIMENTO" ItemStyle-Width="32%" /> 
      <asp:BoundField DataField="TE_ID_STATUS" HeaderText="STATUS" ReadOnly="true" /> 
      <asp:BoundField DataField="MM_QTA" HeaderText="QTA" ReadOnly="true" SortExpression="MM_QTA" /> 
      <asp:BoundField DataField="MM_IMPORTO" HeaderText="IMPORTO" ReadOnly="true" SortExpression="MM_IMPORTO" ItemStyle-HorizontalAlign="Right" DataFormatString="{0:F}" />   
     </Columns> 
</asp:GridView> 

私は動的にデータが空であるだけHeaderText=QTA BoundField内のボタンを挿入したいと思います。正しい方法は何か教えてください。私はTemplateFieldを使うべきだと思いますが、データフィールドだけを動的に表示する方法や、データが空の場合にボタンだけを表示する方法はわかりません。 重要!ボタンとデータは、2つの異なる列ではなく、同じ列になければなりません。 ありがとうございます。

答えて

0

要件の簡単な解決策は、ラベルとボタンでテンプレートフィールドを使用することです。

protected void gridview1_RowDataBound(Object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      Label lblqta = e.Row.FindControl("lblQTA") as Label; 
      if(lblqta.Text == "") 
      btnQTA.Visible =true; 
     } 
    } 
:分離コードで

<asp:GridView ID="gridview1" AutoGenerateColumns="False" OnRowDataBound="gridview1_RowDataBound"> 
      <Columns> 
       <asp:CommandField SelectText="+" ShowSelectButton="True" /> 
       <asp:BoundField ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" DataField="TE_ID_ANALYSIS" HeaderText="TE_ID_ANALYSIS" ReadOnly="True" SortExpression="TE_ID_ANALYSIS"/> 
       <asp:BoundField DataField="DATA" HeaderText="DATA" ReadOnly="True" SortExpression="DATA" /> 
       <asp:BoundField DataField="TE_NDOC" HeaderText="NUMERO" SortExpression="TE_NDOC" /> 
       <asp:BoundField DataField="RIFERIMENTO" HeaderText="RIFERIMENTO" ReadOnly="True" SortExpression="RIFERIMENTO" ItemStyle-Width="32%" /> 
       <asp:BoundField DataField="TE_ID_STATUS" HeaderText="STATUS" ReadOnly="true" /> 
<asp:TemplateField HeaderText="QTA"> 
          <ItemTemplate> 
           <asp:Label ID="lblQTA" runat="server" Text='<%# Eval("MM_QTA")%>'></asp:Label> 
<asp:Button ID="btnQTA" runat="server" Text="Click" Visible="false" /> 
          </ItemTemplate> 
         </asp:TemplateField> 
       <asp:BoundField DataField="MM_IMPORTO" HeaderText="IMPORTO" ReadOnly="true" SortExpression="MM_IMPORTO" ItemStyle-HorizontalAlign="Right" DataFormatString="{0:F}" />   
      </Columns> 
    </asp:GridView> 

次試してみてください

関連する問題