如何为行总值创建总和

时间:2012-08-14 11:41:01

标签: c# javascript asp.net

我有一个嵌套的gridview:

<gridview id="gvParent" runat="server" >
  <Columns>
    <asp:TemplateField>
     <ItemTemplate>
       <asp:Label Id="name" runat="server" Text='<%# Eval("Name")%>' />

        <gridview id="gvChild" runat="server" >
          <Columns>
           <asp:TemplateField>
            <ItemTemplate>
            <input type="text" id="Val1'<%# Eval("Identifiant")%>'" value='<%# Eval("Val1">' onchange=  "CalculateSumRow(Val2'<%# Eval("Identifiant")%>');"/>

           </ItemTemplate>
          </asp:TemplateField>

        <gridview id="gvChild" runat="server" >
          <Columns>
           <asp:TemplateField>
            <ItemTemplate>
       <input type="text" id="Val2'<%# Eval("Identifiant")%>'" value='<%# Eval("Val2")%>' onchange="CalculateSumRow(Val2'<%# Eval("Identifiant")%>');"/>

           </ItemTemplate>
          </asp:TemplateField>



         <asp:TemplateField>
          <ItemTemplate>
            <input type="text" id="TotalRealise<%# Eval("Identifiant")%>'" value='<%# Eval       ("TotalRealise")%>'/>

            </ItemTemplate>
          </asp:TemplateField>


      </Columns>

    </gridview>

    </ItemTemplate>
  </asp:TemplateField>
  </Columns>

在javascript函数CalculateSumRow中我在字段TotalRealise中每行得到val1和val 2的总和,我需要总共字段TotalRealise.I尝试创建一个我从CalculateSumRow调用的javascript函数。我尝试逐行解析网格,然后第二个网格,我想获得所有的全部字段并与此相加但我在搜索第二个网格时收到错误。我想从javascript进行计算。

 function CalculateSumRow (identifiant)
 {
   ......
  CalculateTotal();
 }

 function CalculateTotal()
 {
   var grdPar=document.getdocumentById('<%= gvParent%>');

   for(row=1;row<grdPar.rows.length;row++)
   {

      var grdChild=document.getdocumentById('<%= gvChild%>');

      for(rowC=1;row<grdChild.rows.length;rowC++)
       {
         alert(grdChild.rows[rowc].cell[3].value);
       }

    }
   }

有人可以帮我赚这笔钱吗? 感谢。

2 个答案:

答案 0 :(得分:0)

如果您习惯使用jQuery,请尝试以下方法:

$(function(){
  var sum = 0;
  $("input[id^="TotalRealise"]").each(function(){
    sum = sum + parseFloat($(this).val());
  });
});

调用以下函数on on输入值的事件:

function CalculateTotalRealise()
{
 var sum = 0;
  $("input[id^="TotalRealise"]").each(function(){
    sum = sum + parseFloat($(this).val());
  });
 return sum;
}

这将为您提供TotalRealise字段的总和。

答案 1 :(得分:0)

最好在网格的OnRowDataBound事件中执行此操作

double totalSum = 0;
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    int columnValue = 0;

    // get the value from column index 0, can be any other index where you have your value
    int.TryParse(e.Row.Cells[0].Text, out columnValue);

    if (columnValue > 0)
    {
        totalSum = totalSum + columnValue;
    }
}