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関数を作成しようとしています。 2番目のグリッドとすべてのtotalrealiseフィールドを取得してこれを合計したいのですが、2番目のグリッドを検索するとエラーが発生します。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

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フィールドの合計が得られます。

于 2012-08-14T11:58:01.737 に答える
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 に答える