2012-08-14 81 views
0

我有一个嵌套的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我做val1和VAL 2每行的总和领域TotalRealise,我需要共TotalRealise.I尝试做一个JavaScript函数,我从CalculateSumRow调用。我尝试逐行解析第一个网格,然后第二个网格,我想获得所有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); 
     } 

    } 
    } 

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

回答

0

如果你使用jQuery很舒服,试试这个:

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

调用这个函数的输入电平变化值事件:

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

这会给你TotalRealise领域的总和。

+0

但我的领域都在最后一个identifiant,像TotalRealise1,TotalRealise2,TotalRealise3.Can我获得ID输入开始TotalRealise? – user1577242 2012-08-14 12:27:56

+0

input [id^=“TotalRealise”]会得到所有的输入,其ID以TotalRealise开头 – 2012-08-14 13:10:34

+0

谢谢,当我加载form.But时工作正常。但如果有人修改“val ..”字段,我重新计算行值。如何调用这个函数在每次从行重新计算之后? – user1577242 2012-08-14 14:10:16

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; 
    } 
} 
+0

为什么你想在JavaScript中使用它? – JohnnBlade 2012-08-14 12:08:40

相关问题