GridView 页脚的问题

a278342801 2010-08-30 10:47:16
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView myrows = (DataRowView)e.Row.DataItem;
a+= Convert.ToInt32(myrows[2].ToString());
b+= Convert.ToInt32(myrows[3].ToString());
}

// 合计
if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[1].Text = "合计";
e.Row.Cells[3].Text = a.ToString();
e.Row.Cells[4].Text = b.ToString();
}

这是我的代码 添加一个合计 但是为什么 DataRowView myrows = (DataRowView)e.Row.DataItem;这行会报错呢?
无法将类型为“BookPro.BookInfo”的对象强制转换为类型“System.Data.DataRowView”。
期待高手回答
...全文
94 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
rwm5366745 2010-08-30
  • 打赏
  • 举报
回复

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// DataRowView myrows = (DataRowView)e.Row.DataItem;
//a+= Convert.ToInt32(myrows[2].ToString());
//b+= Convert.ToInt32(myrows[3].ToString());
a+=Convert.ToInt32(e.Row.Cells[2].Text.ToString());
b+= Convert.ToInt32(e.Row.Cells[3].Text.ToString());
}

// 合计
if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[1].Text = "合计";
e.Row.Cells[3].Text = a.ToString();
e.Row.Cells[4].Text = b.ToString();
}

}
a278342801 2010-08-30
  • 打赏
  • 举报
回复
谢谢 我去试试
Peter200694013 2010-08-30
  • 打赏
  • 举报
回复
DataRowView myrows = (DataRowView)e.Row.DataItem;
a+= Convert.ToInt32(myrows[2].ToString());
b+= Convert.ToInt32(myrows[3].ToString());
BookPro.BookInfo中有对象的myrows[2].ToString()和myrows[3].ToString()对应的值么?

如果有,直接写
BookPro.BookInfo bookinfo = (BookPro.BookInfo)e.Row.DataItem;

试试,然后通过bookinfo取值

wuyq11 2010-08-30
  • 打赏
  • 举报
回复
BookPro.BookInfo b=e.Row.DataItem as BookPro.BookInfo;
a278342801 2010-08-30
  • 打赏
  • 举报
回复
噢 是这样啊 ILIST<>可以吗?
wuyq11 2010-08-30
  • 打赏
  • 举报
回复
绑定的是List<T>不能强制转换
ds可以
a278342801 2010-08-30
  • 打赏
  • 举报
回复
可是我已经把BOOKINFO的值传到GridView1里面了我感觉应该跟BOOKINFO有关系啊
wuyq11 2010-08-30
  • 打赏
  • 举报
回复
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label labValue = (Label)e.Row.FindControl("lab");
DataRowView drv = (DataRowView)e.Row.DataItem;
}
}
DataControlRowType.Footer
e.Row.Cells[0].Text
Peter200694013 2010-08-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 a278342801 的回复:]
郁闷 以前没有碰到这个错误啊 这次是怎么回事 我不太懂
[/Quote]
比如两个类 class1 class2,之间没有任何关系
然后这两个类的对象 c1, c2
c1 = (class1)c2; //这样就会报错
因为它们之间不可以强转

//
generhappy 2010-08-30
  • 打赏
  • 举报
回复
你的那一列数据的格式不对,看一下数据格式!!!
a278342801 2010-08-30
  • 打赏
  • 举报
回复
对啊
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView myrows = (DataRowView)e.Row.DataItem;
a+= Convert.ToInt32(myrows[2].ToString());
b+= Convert.ToInt32(myrows[3].ToString());
}

// 合计
if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[1].Text = "合计";
e.Row.Cells[3].Text = a.ToString();
e.Row.Cells[4].Text = b.ToString();
}


a278342801 2010-08-30
  • 打赏
  • 举报
回复
那我应该怎么处理这个错误呢?
Peter200694013 2010-08-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 a278342801 的回复:]
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView myrows = (DataRowView)e.Row.DataItem;
a+= Convert.ToInt32(myrows[2].ToString());
b+= Convert.ToInt32(myrows[3].ToString());
……
[/Quote]
这个写在了GridViewTest_RowDataBound中?
a278342801 2010-08-30
  • 打赏
  • 举报
回复
郁闷 以前没有碰到这个错误啊 这次是怎么回事 我不太懂
Peter200694013 2010-08-30
  • 打赏
  • 举报
回复
错误信息很详细啊...
对象之间不能强制转换

62,047

社区成员

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

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

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

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