2012-08-14 80 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

相關問題