none
gridviewの合計をテキストボックスに表示 RRS feed

  • 質問

  • お世話になっております。

    gridviewでこづかい帳を作成しています。
    項目は、ID、日付、購入品、金額 です。

    gridviewのフッタに表示した合計金額を
    別の場所に設置した
    テキストボックスにも表示させたいと思っています。

    ネットで検索するとそれらしきものがあったのですが
    参考サイトがリンク切れになってしまっていて見れません。

    ご教授ください。
    お願いいたします!


    ▼gridviewのコードは以下のとおりです。

    <asp:GridViewID="GridView1"runat="server"
    AllowSorting="True"AutoGenerateColumns="False"DataKeyNames="ID"
    DataSourceID="SqlDataSource2"ShowFooter="True"CellPadding="4"
    ForeColor="#333333"GridLines="None"Width="577px">
    <AlternatingRowStyleBackColor="White"/>

    <Columns>

    <asp:CommandFieldShowDeleteButton="True"ShowEditButton="True"/>
    <asp:TemplateFieldHeaderText="ID"InsertVisible="False"SortExpression="ID"
    Visible="False">
    <ItemTemplate>
    <asp:LabelID="TextBox1"runat="server"Text='<%#Bind("ID")%>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:LabelID="Label1"runat="server"Text='<%#Eval("ID")%>'></asp:Label>
    </EditItemTemplate>
    </asp:TemplateField>

    <asp:TemplateFieldHeaderText="日付"SortExpression="Date">
    <EditItemTemplate>
    <asp:TextBoxID="TextBox2"runat="server"Text='<%#Bind("Date","{0:yyyy/MM/dd(ddd)}")%>'></asp:TextBox>
    </EditItemTemplate>
    <ItemTemplate>
    <asp:LabelID="Label2"runat="server"Width="100px"Text='<%#Bind("Date","{0:yyyy/MM/dd(ddd)}")%>'></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>

    <asp:TemplateFieldHeaderText="購入品"SortExpression="Item">
    <ItemTemplate>
    <asp:LabelID="TextBox4"runat="server"Text='<%#Bind("Item")%>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBoxID="Label4"runat="server"Text='<%#Bind("Item")%>'></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateField>

    <asp:TemplateFieldHeaderText="金 額"SortExpression="Price">
    <ItemTemplate>
    <asp:LabelID="TextBox3"runat="server"Width="150px"Text='<%#Bind("Price","{0:c}")%>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBoxID="Label3"runat="server"Text='<%#Bind("Price")%>'></asp:TextBox>
    </EditItemTemplate>
    <ItemStyleHorizontalAlign="Right"/>
    </asp:TemplateField>

    </Columns>

    <EditRowStyleBackColor="#2461BF"/>
    <FooterStyleBackColor="#507CD1"Font-Bold="True"ForeColor="White"/>
    <HeaderStyleBackColor="#507CD1"Font-Bold="True"ForeColor="White"/>
    <PagerSettingsPageButtonCount="99"/>
    <PagerStyleBackColor="#2461BF"ForeColor="White"HorizontalAlign="Center"/>
    <RowStyleBackColor="#EFF3FB"/>
    <SelectedRowStyleBackColor="#D1DDF1"Font-Bold="True"ForeColor="#333333"/>
    <SortedAscendingCellStyleBackColor="#F5F7FB"/>
    <SortedAscendingHeaderStyleBackColor="#6D95E1"/>
    <SortedDescendingCellStyleBackColor="#E9EBEF"/>
    <SortedDescendingHeaderStyleBackColor="#4870BE"/>

    </asp:GridView>


    ▼.vbのコードは以下のとおりです。

    'フッターに合計を表示
    DimpriceTotalAsDecimal=0

    ProtectedSubGridView1_RowDataBound(ByValsenderAsObject,ByValeAsSystem.Web.UI.WebControls.GridViewRowEventArgs)HandlesGridView1.RowDataBound
    SelectCasee.Row.RowType

    'カレント行がデータ行?
    CaseDataControlRowType.DataRow
    priceTotal+=Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem,"Price"))

    'カレント行がフッター?
    CaseDataControlRowType.Footer
    e.Row.Cells(1).Text="合計:"
    e.Row.Cells(4).Text=String.Format("\{0:n0}",priceTotal)
    e.Row.Cells(4).HorizontalAlign=HorizontalAlign.Right
    EndSelect
    EndSub


    • 編集済み masunona 2011年12月2日 2:14
    2011年12月2日 2:13

回答

  • フッタに合計金額をいれるのと同じタイミングでTextBoxにデータを設定すればいいだけじゃないかと思いますが。

     


    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    • 回答としてマーク masunona 2011年12月2日 5:41
    2011年12月2日 4:47

すべての返信

  • フッタに合計金額をいれるのと同じタイミングでTextBoxにデータを設定すればいいだけじゃないかと思いますが。

     


    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    • 回答としてマーク masunona 2011年12月2日 5:41
    2011年12月2日 4:47
  • ご回答ありがとうございます!

     

    ものすごく簡単にできてしまいました・・・。

    お騒がせしました。ありがとうございます!

    'カレント行がフッター?
    CaseDataControlRowType.Footer
    e.Row.Cells(1).Text="合計:"
    e.Row.Cells(4).Text=String.Format("\{0:n0}",priceTotal)
    txtPricetotal.Text=String.Format("\{0:n0}",priceTotal)←★
    e.Row.Cells(4).HorizontalAlign=HorizontalAlign.Right

    2011年12月2日 5:41