トップ回答者
list view での合計値の出し方について

質問
-
asp.net初心者です。
ただいま、家計簿のシステムを作成中です。
入力した金額の合計値が”合計”の右側に表示されるものを作成したいと思っているのですが、どうにもうまく動きません。以下がソースとなるのですがどのようにすれば表示されるようになるのかご教授いただけないでしょうか。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="now.aspx.cs" Inherits="family_nowmonth_now" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
decimal total = 0;
protected void ListView1_ItemDataBound(object sender,ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
ListViewDataItem lvdi = (ListViewDataItem)e.Item;
DataRowView drv = (DataRowView) lvdi.DataItem;
total = total + (decimal)drv["money"];
}
}
protected void ListView1_DataBound(object sender, EventArgs e)
{
Label label = (Label)ListView1.FindControl("totalLabel");
label.Text = String.Format("", total);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ListView ID="ListView1" runat="server" DataKeyNames="buyid"
DataSourceID="SqlDataSource1" InsertItemPosition="FirstItem">
<AlternatingItemTemplate>
<tr style="background-color: #FFFFFF;color: #284775;">
<td>
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="削除" />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編集" />
</td>
<td>
<asp:Label ID="dayLabel" runat="server" Text='<%# Eval("day", "{0:yyyy/MM/dd}") %>' />
</td>
<td>
<asp:Label ID="moneyLabel" runat="server" Text='<%# Eval("money") %>' />
</td>
<td>
<asp:Label ID="tenpoLabel" runat="server" Text='<%# Eval("tenpo") %>' />
</td>
<td>
<asp:Label ID="buyidLabel" runat="server" Text='<%# Eval("buyid") %>' />
</td>
</tr>
</AlternatingItemTemplate>
<EditItemTemplate>
<tr style="background-color: #999999;">
<td>
<asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel"
Text="キャンセル" />
</td>
<td>
<asp:TextBox ID="dayTextBox" runat="server" Text='<%# Bind("day") %>' />
</td>
<td>
<asp:TextBox ID="moneyTextBox" runat="server" Text='<%# Bind("money") %>' />
</td>
<td>
<asp:TextBox ID="tenpoTextBox" runat="server" Text='<%# Bind("tenpo") %>' />
</td>
<td>
<asp:Label ID="buyidLabel1" runat="server" Text='<%# Eval("buyid") %>' />
</td>
</tr>
</EditItemTemplate>
<EmptyDataTemplate>
<table runat="server"
style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;">
<tr>
<td>
データは返されませんでした。</td>
</tr>
</table>
</EmptyDataTemplate>
<InsertItemTemplate>
<tr style="">
<td>
<asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="挿入" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="クリア" />
</td>
<td>
<asp:TextBox ID="dayTextBox" runat="server" Text='<%# Bind("day") %>' />
</td>
<td>
<asp:TextBox ID="moneyTextBox" runat="server" Text='<%# Bind("money") %>' />
</td>
<td>
<asp:TextBox ID="tenpoTextBox" runat="server" Text='<%# Bind("tenpo") %>' />
</td>
<td>
</td>
</tr>
</InsertItemTemplate>
<ItemTemplate>
<tr style="background-color: #E0FFFF;color: #333333;">
<td>
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="削除" />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編集" />
</td>
<td>
<asp:Label ID="dayLabel" runat="server" Text='<%# Eval("day", "{0:yyyy/MM/dd}") %>' />
</td>
<td>
<asp:Label ID="moneyLabel" runat="server" Text='<%# Eval("money") %>' />
</td>
<td>
<asp:Label ID="tenpoLabel" runat="server" Text='<%# Eval("tenpo") %>' />
</td>
<td>
<asp:Label ID="buyidLabel" runat="server" Text='<%# Eval("buyid") %>' />
</td>
</tr>
</ItemTemplate>
<LayoutTemplate>
<table runat="server">
<tr runat="server">
<td runat="server">
<table ID="itemPlaceholderContainer" runat="server" border="1"
style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;font-family: Verdana, Arial, Helvetica, sans-serif;">
<tr runat="server" style="background-color: #E0FFFF;color: #333333;">
<th runat="server">
</th>
<th runat="server">
day</th>
<th runat="server">
money</th>
<th runat="server">
tenpo</th>
<th runat="server">
buyid</th>
</tr>
<tr ID="itemPlaceholder" runat="server">
</tr>
<tr>
<td></td>
<td>合計</td>
<td style="text-align: right;">
<asp:Label ID="totallabel" runat="server"/></td>
</tr>
</table>
</td>
</tr>
<tr runat="server">
<td runat="server"
style="text-align: center;background-color: #5D7B9D;font-family: Verdana, Arial, Helvetica, sans-serif;color: #FFFFFF">
<asp:DataPager ID="DataPager1" runat="server">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True"
ShowLastPageButton="True" />
</Fields>
</asp:DataPager>
</td>
</tr>
</table>
</LayoutTemplate>
<SelectedItemTemplate>
<tr style="background-color: #E2DED6;font-weight: bold;color: #333333;">
<td>
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="削除" />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編集" />
</td>
<td>
<asp:Label ID="dayLabel" runat="server" Text='<%# Eval("day") %>' />
</td>
<td>
<asp:Label ID="moneyLabel" runat="server" Text='<%# Eval("money") %>' />
</td>
<td>
<asp:Label ID="tenpoLabel" runat="server" Text='<%# Eval("tenpo") %>' />
</td>
<td>
<asp:Label ID="buyidLabel" runat="server" Text='<%# Eval("buyid") %>' />
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
DeleteCommand="DELETE FROM [kaimono01] WHERE [buyid] = @buyid"
InsertCommand="INSERT INTO [kaimono01] ([day], [money], [tenpo]) VALUES (@day, @money, @tenpo)"
SelectCommand="SELECT [day], [money], [tenpo], [buyid] FROM [kaimono01]"
UpdateCommand="UPDATE [kaimono01] SET [day] = @day, [money] = @money, [tenpo] = @tenpo WHERE [buyid] = @buyid">
<DeleteParameters>
<asp:Parameter Name="buyid" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter DbType="Date" Name="day" />
<asp:Parameter Name="money" Type="Int32" />
<asp:Parameter Name="tenpo" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter DbType="Date" Name="day" />
<asp:Parameter Name="money" Type="Int32" />
<asp:Parameter Name="tenpo" Type="String" />
<asp:Parameter Name="buyid" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
回答
-
もう一つ問題らしきところがありました。
アップされているコードを見る限り、ListView の ItemDataBound
イベントと DataBound イベントに、ListView1_ItemDataBound メ
ソッドと ListView1_DataBound メソッドがアタッチされてないで
す。つまり、以下のコードが見当たりません。
OnItemDataBound="ListView1_ItemDataBound"
OnDataBound="ListView1_DataBound"
すべての返信
-
あなたは、あなたがしたいことを、正確にコードに書き表せているという自信をお持ちでしょうか。お持ちでないなら、このコードの要所要所で何をしたいかということを書いてください。
また、『どうもうまく動きません』ではなく、「これこれのコードによって、このようになると思っていたところ、このような結果になった」というように、行ったこと、期待したこと、実際に起こったことを具体的に書いてください。フォーラムを常に見ていればわかることですが、実際に答えを書き込んでいるのは十数人です。その人達が、毎日膨大な投稿に対して色々考えています。投稿者のことを考えろ、とはいいません。他に質問を持っている人のことも考えてあげてください。あなた同様、彼らも困っているのです。彼らのことも考える時間を、回答者に与えてあげてください。
もし、データが何も表示されないということなら、ASP.NET では「バインドしているデータを表示(レンダリング)する」と指示をしてやる必要があります。ここに挙げてあるコードには入っていないように思えましたので、調べることを提案します。
あれ?script 要素って、そんなところにあって良かったっけ?
Jitta@わんくま同盟
- 回答の候補に設定 山本春海 2012年6月27日 9:30
-
もう一つ問題らしきところがありました。
アップされているコードを見る限り、ListView の ItemDataBound
イベントと DataBound イベントに、ListView1_ItemDataBound メ
ソッドと ListView1_DataBound メソッドがアタッチされてないで
す。つまり、以下のコードが見当たりません。
OnItemDataBound="ListView1_ItemDataBound"
OnDataBound="ListView1_DataBound" -