0

我有一个嵌套的网格视图:

<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。我尝试创建一个从CalculateSumRow调用的javascript函数。我尝试逐行解析第一个网格,然后第二个网格,我想获取所有 totalrealise 字段并用它求和,但是当我搜索第二个网格时收到错误。我想从 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);
       }

    }
   }

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

4

2 回答 2

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;
    }
}
于 2012-08-14T12:07:38.863 回答
0

如果你习惯使用 jQuery,试试这个:

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

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

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

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

于 2012-08-14T11:58:01.737 回答