0

親愛なるユーザー 私は少し問題があります。次のように、いくつかの列を持つグリッドビューがあります。

<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 つの異なる列ではなく、同じ列にある必要があります。前もって感謝します。

4

1 に答える 1

0

要件に対する簡単な解決策は、Label と Button で Template Field を使用することです。以下を試してください

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

コードビハインドについて:

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;
        }
    } 
于 2016-05-17T08:58:53.910 に答える