日期:2014-05-18  浏览次数:20686 次

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绑定数据时 求和