Repeater 列求和(汇总)

woshimaikou 2011-04-24 06:58:37
Repeater 中有一列 sellNum 现在想在最后一条数据后 面计算显示出 该 Repeater中 所有 sellNum 的和 用下面的方法
在红色字体出报“未将对象引用设置到对象的实例。”
很奇怪 怎么回事呢??

void MainSellList_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
DataRowView curDataItem = e.Item.DataItem as DataRowView;
if (curDataItem["sellNum"] != null)
sellNum += Convert.ToInt32(curDataItem["sellNum"]);

}
else if (e.Item.ItemType == ListItemType.Footer)
{
Label tsellNum = e.Item.FindControl("totalSellNum") as Label;
tsellNum.Text = sellNum.ToString();
}


}
...全文
498 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
子夜__ 2011-04-25
  • 打赏
  • 举报
回复
curDataItem["sellNum"]没有获取到。

把前台代码贴来看看。
woshimaikou 2011-04-25
  • 打赏
  • 举报
回复
已解决 Repeater中存放的是一个 自定义的对象 把e.Item.DataItem as 自定义对象 就好了
ZhuZhuYuXiang 2011-04-25
  • 打赏
  • 举报
回复

//应该这样
void MainSellList_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
DataRowView curDataItem = e.Item.DataItem as DataRowView;
if (curDataItem["sellNum"] != null)
{
sellNum += Convert.ToInt32(curDataItem["sellNum"]);
}

}
else if (e.Item.ItemType == ListItemType.Footer)
{
Label tsellNum = e.Item.FindControl("totalSellNum") as Label;
tsellNum.Text = sellNum.ToString();
}


}


moneyNUMBER_1 2011-04-25
  • 打赏
  • 举报
回复
先有行后有列
moneyNUMBER_1 2011-04-25
  • 打赏
  • 举报
回复
if(curDataItem!=null&&curDataItem["sellNum"]!=null)
{


}
jcx396158820 2011-04-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 chuntian1983 的回复:]
C# code
if (curDataItem["sellNum"] != null)
判读不全
[/Quote]
+1
moneyNUMBER_1 2011-04-25
  • 打赏
  • 举报
回复
curDataItem就是null 在curDataItem["sellNum"]可定是不行的 你的确定curDataItem行不为null,在确定列sellNum不为null
  • 打赏
  • 举报
回复
if (curDataItem["sellNum"] != null)
判读不全
xuStanly 2011-04-24
  • 打赏
  • 举报
回复
sellNum在哪里定义的?
补充一下
try{sellNum += Convert.ToInt32(curDataItem["sellNum"]);}
catch{sellNum += 0;}
这样可以去掉前面那个if判断。
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 woshimaikou 的回复:]
引用 6 楼 amandag 的回复:
在ItemDataBound事件中进行处理


都一样 还是哪个错误啊!!
[/Quote]

DataBound中如果是DataSet或者DataTable
e.Item.DataItem as DataRowView是可以正确转换的,但如果绑的是DataReader就出错,改成这样
System.Data.Common.DbDataRecord view = (System.Data.Common.DbDataRecord)e.Item.DataItem;
woshimaikou 2011-04-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 amandag 的回复:]
在ItemDataBound事件中进行处理
[/Quote]

都一样 还是哪个错误啊!!
amandag 2011-04-24
  • 打赏
  • 举报
回复
在ItemDataBound事件中进行处理
huangwenquan123 2011-04-24
  • 打赏
  • 举报
回复
   protected void Repeater4_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView row = e.Item.DataItem as DataRowView;
sum +=Convert.ToInt32(row["ID"]);
}
else if (e.Item.ItemType == ListItemType.Footer)
{
Label l = e.Item.FindControl("Label2") as Label;
l.Text = sum.ToString();
}
}
huangwenquan123 2011-04-24
  • 打赏
  • 举报
回复

//ItemDataBound事件中写
//例如
protected void Repeater4_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView row = e.Item.DataItem as DataRowView;
Response.Write(row["Name"]);
}
}
我姓区不姓区 2011-04-24
  • 打赏
  • 举报
回复
断点调试一下看看e.Item.DataItem是什么类型的
woshimaikou 2011-04-24
  • 打赏
  • 举报
回复
if (curDataItem["sellNum"] != null)

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧