2016-05-17 10 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> 

Я хотел бы, чтобы динамически вставить кнопку внутри BoundField где HeaderText=QTA только тогда, когда данные пуст. Не могли бы вы рассказать мне, что является правильным? Я полагаю, что я должен использовать TemplateField, но я не знаю, как динамически показывать только поле данных, или как показывать только кнопку, если данные пустые. Важно! Кнопка и данные должны находиться в одном столбце, а не в двух разных столбцах. Спасибо заранее.

ответ

0

Простые решения для вашего требования - использовать поле шаблона с ярлыком и кнопкой. Попробуйте следующие

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

На CodeBehind:

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