首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

ASP.NET GridView 控件,求横列的总和、竖列的总和。解决方案

2012-04-11 
ASP.NET GridView 控件,求横列的总和、竖列的总和。列如:我有个aa 表有4个字段,分别是name、dj、sl、zj、上面的

ASP.NET GridView 控件,求横列的总和、竖列的总和。
列如:我有个aa 表有4个字段,分别是name、dj、sl、zj、
上面的字段按顺序将他们绑定在GridView控件上。加上编辑功能。
点击编辑后自修改sl列的值,点击更新(只修改sl值,zj值自动按照dj乘以sl改变)。 求dj乘以sl的值,在zj显示 然后在Label8控件里求出zj竖列的总和显示出来

调试的时候出现错误,“输入字符串的格式不正确。”
老师们快来帮忙啊!!!!!!!!! QQ:695496434下面是详细代码:
前台
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
  DataKeyNames="ID" DataSourceID="SqlDataSource1">
  <Columns>
  <asp:BoundField DataField="name" HeaderText="name" ReadOnly="True" 
  SortExpression="name" />
  <asp:BoundField DataField="dj" HeaderText="dj" ReadOnly="True" 
  SortExpression="dj" />
  <asp:TemplateField HeaderText="sl" SortExpression="sl">
  <EditItemTemplate>
  <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("sl") %>'></asp:TextBox>
  </EditItemTemplate>
  <ItemTemplate>
  <asp:Label ID="Label1" runat="server" Text='<%# Bind("sl") %>'></asp:Label>
  </ItemTemplate>
  </asp:TemplateField>
  <asp:TemplateField HeaderText="zj" SortExpression="zj">
  <ItemTemplate>
  <asp:Label ID="Label2" runat="server" 
  Text='<%# sum(Eval("sl"),Eval("dj")) %>'></asp:Label>
  </ItemTemplate>
  </asp:TemplateField>
  <asp:CommandField ShowEditButton="True" />
  </Columns>
  </asp:GridView>



后台
protected void Page_Load(object sender, EventArgs e)
  {
  qh();
  }
  private void qh()
  {
  decimal sum = 0;
  foreach (GridViewRow row in GridView1.Rows)
  {
  sum += Convert.ToInt32(row.Cells[3].Text);
  }
  Label8.Text = sum.ToString();
  }

  public string sum(object sl, object dj)
  {
  int inta = Convert.ToInt32(sl);
  int intb = Convert.ToInt32(dj);
  return Convert.ToString(inta * intb);
  }


[解决办法]
首先看下sl 和dj 是否是null

C# code
int inta = Convert.ToInt32(sl);int intb = Convert.ToInt32(dj);
[解决办法]
格式不对就检查格式啊
断点调试
[解决办法]
随着需求提高,表现层可能用各种方式表现,例如原来用百分比数字的地方可能改为用比例尺(图片)来表示。所以不要从什么gridview的输出去找数据,应该从它的数据源去统计数字。

如果你这个问题出自一个什么培训学校的教材,那么你上错了学校了。
[解决办法]

sum += Convert.ToInt32(row.Cells[3].Text);
改成
int value;
sum+=int.TryParse(row.Cells[3].Text,out value);


如果不报错,说明row.Cells[3].Text不是一个合法的整数格式字符串。
[解决办法]
qh() 这个方法应该不是在加载事件中调用 你要统计和的话 在gridview的DataBinding事件里面写 意思就是当gridview绑定数据时 求和


不然你的gridview还没加载 你就在load事件里面调用 是不对的

热点排行