1

私がこれを尋ねなければならないことを信じることができません-あなたはそのような基本的な機能を実装するのは簡単だと思うでしょうが、私はGridviewのフッターを作成するのに苦労しています。ここここここなど、さまざまなチュートリアルやその他の質問を確認しましたが、まだ問題が発生しています。

問題は、フッターを適切に表示することです(つまり、余分な空の列を追加しないでください)。私が収集したものから、FooterTemplateをTemplateFieldタグ内に配置する必要があります。そうしないと、機能しません。少なくとも、私にとってはコンパイルされません。これをBoundFields列の後に挿入すると、望ましくない余分な列が追加されます。

<asp:GridView ID="gridview1" runat="server" AutoGenerateColumns="false" AllowSorting="true"
    CellPadding="3" HorizontalAlign="Center" GridLines="both" CssClass="dataTable1"
    OnRowDataBound="Colour_Columns" Caption="PARTIAL COMPARE" ShowFooter="true">
    <HeaderStyle BackColor="Black" ForeColor="AntiqueWhite" Height="30" CssClass="header" />
    <FooterStyle BackColor="Black" ForeColor="AntiqueWhite" Height="30" CssClass="footer" />
    <Columns>
        <asp:BoundField DataField="FOLDER" HeaderText="Location" />
        <asp:BoundField DataField="FILE" HeaderText="File" />
        <asp:BoundField DataField="CHECKSUM" HeaderText="Checksum" Visible="false" />
        <asp:BoundField DataField="STATUS" HeaderText="Status" />
        <asp:BoundField DataField="DATE" HeaderText="Date" Visible="false" />
        <asp:TemplateField>
            <FooterTemplate>
                <asp:Button ID="UpdateButton" runat="server" Text="UPDATE" CssClass="updateButton" />
            </FooterTemplate>
        </asp:TemplateField>
     </Columns>
</asp:GridView>

ここに画像の説明を入力してください

同様に、BoundFieldsの前に配置すると、左側に列が追加されます。すべてのBoundFieldをTemplateFieldの下に配置しようとすると、コンパイルされません。

追加の列を作成せずにフッターをグリッドビューに追加するにはどうすればよいですか?また、その間、colspanを1に設定するにはどうすればよいですか?(更新ボタンが1つしかないため、フッターに3つの列は必要ありません。)

配色法:

protected void Colour_Columns(Object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.Cells[3].Text == "Match")
           e.Row.BackColor = Color.Lime;
        if (e.Row.Cells[3].Text == "Mismatch")
           e.Row.BackColor = Color.Gold;
        if (e.Row.Cells[3].Text == "New File")
           e.Row.BackColor = Color.PeachPuff;
    }
}

このメソッドはItemTemplate値を認識していないようです...

4

3 に答える 3

3

最後の列にのみテンプレートフィールドを使用してみてください。その列でItemTemplateとFooterTemplateを指定できます。以下のコードを試してください。

<asp:GridView ID="gridview1" runat="server" AutoGenerateColumns="false" AllowSorting="true"
    CellPadding="3" HorizontalAlign="Center" GridLines="both" CssClass="dataTable1"
    OnRowDataBound="Colour_Columns" Caption="PARTIAL COMPARE" ShowFooter="true">
    <HeaderStyle BackColor="Black" ForeColor="AntiqueWhite" Height="30" CssClass="header" />
    <FooterStyle BackColor="Black" ForeColor="AntiqueWhite" Height="30" CssClass="footer" />
    <Columns>
        <asp:BoundField DataField="FOLDER" HeaderText="Location" />
        <asp:BoundField DataField="FILE" HeaderText="File" />
        <asp:BoundField DataField="CHECKSUM" HeaderText="Checksum" Visible="false" />
        <asp:TemplateField HeaderText="Status">
             <ItemTemplate>
                  <asp:Label ID="StatusLabel" runat="server" Text='<%# Eval("STATUS") %>' />
            </ItemTemplate>
            <FooterTemplate>
                <asp:Button ID="UpdateButton" runat="server" Text="UPDATE" CssClass="updateButton" />
            </FooterTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="DATE" HeaderText="Date" Visible="false" />
     </Columns>
</asp:GridView>

テンプレートフィールドから値を読み取るようにCsファイルを変更しました。ラベルにIDを追加して変更したので、ASPXを再コピーしてください。

CS:

protected void Colour_Columns(Object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        Label StatusLabel = e.Row.FindControl("StatusLabel") as Label;
        if (StatusLabel.Text == "Match")
           e.Row.BackColor = Color.Lime;
        if (StatusLabel.Text == "Mismatch")
           e.Row.BackColor = Color.Gold;
        if (StatusLabel.Text == "New File")
           e.Row.BackColor = Color.PeachPuff;
    }
}
于 2013-03-27T13:59:27.883 に答える
2

と一緒に使用FooterTemplateしないでくださいBoundField。フッターテンプレートは、組み合わせて使用​​することを目的としています。さらに、TemplateFieldフッターテンプレートは列ごとに適用されるため、数値データがある場合にグリッドビューの下部に合計を集計できます。

これは、最初の列にフッターフィールドがあるテンプレートフィールドの使用例です。必要に応じて、必要に応じてこれを変更できます。

ASPX:

    <asp:GridView ID="gridview1" runat="server" AutoGenerateColumns="false" ShowFooter="true">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Label ID="lblFolder" runat="server" Text='<%# Eval("FOLDER") %>' />
                </ItemTemplate>
                <FooterTemplate>
                    Footer content displayed under FOLDER, notice no extra column!
                </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Label ID="lblFile" runat="server" Text='<%# Eval("FILE") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Label ID="lblCheck" runat="server" Text='<%# Eval("CHECKSUM") %>' />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

結果:

ここに画像の説明を入力してください

または、BoundFieldsを使用して、コードにフッターを動的に追加することもできます。

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Footer)
    {
        var footer = new Label();
        footer.Text = "Footer content";
        //Footer will be displayed under the *first* column
        e.Row.Cells[0].Controls.Add(footer); 
   }
}
于 2013-03-27T14:35:00.760 に答える
0

このフォームのコーディング方法:

  発注書マスター[lblPONumberH]                       
PO番号://ここにテキストボックス// RequireField PO日付://ここにカレンダーエクステンダー付きのテキストボックスベンダー://ここにドロップダウン作成者://ここにテキストボックス保存//ボタンキャンセル//ボタングリッドビュー                                

アイテム説明予算番号数量単位価格データ
バウンドデータバウンドデータバウンドデータバウンドデータバウンドフッタースタイルの編集と削除txtItemDescriptionddlBnumbertxtQuantity ddlUOM txtPrice AddBtn

于 2013-05-01T04:33:01.700 に答える