2016-11-24 3 views
0

私はgridviewを持っており、フッターに合計値はgrandTotalPCTとなります。 grandTotalPCTが100に等しくない場合、ボタンbtnUpdatePCTDを無効のままにしたい場合は、100と等しい場合はボタンが有効になります。jqueryでgridviewのボタンを有効にする

以下のコードは、値の変更がgrandTotalPCTとして機能する別の関数から呼び出されています。問題はボタンの状態が変わらないことです。

<asp:TemplateField HeaderText="Line" ItemStyle-Width="50%"> 
    <ItemTemplate> 
     <asp:Label ID="lblLineD" runat="server" Text='<%# Bind("line") %>'></asp:Label> 
    </ItemTemplate> 
    <FooterTemplate> 
     <asp:Button ID="btnUpdatePCTD" runat="server" Text="Update" CssClass="btn btn-default btn-sm" OnClick="updateDockPCT" Enabled="False" /> 
    </FooterTemplate> 
    <FooterStyle HorizontalAlign="Center" /> 
</asp:TemplateField> 

<asp:TemplateField HeaderText="% Target" ItemStyle-Width="25%"> 
    <ItemTemplate> 
     <asp:TextBox ID="tbPTC" runat="server" Text='<%# Convert.ToDouble(Eval("dailypercent")) * 100 %>' CssClass="tbPTC"></asp:TextBox> 
    </ItemTemplate> 
    <FooterTemplate> 
     <asp:Label ID="grandTotalPCT" runat="server" CssClass="grandTotalPCT"></asp:Label> 
    </FooterTemplate> 
</asp:TemplateField> 

//To get grand Total PCT 
function CalculateGrandTotalPCT() { 
    var grandTotalPCT = 0.0; 
    $('#<%=gvDockPCT.ClientID %> tr:gt(0)').each(function() { 
     grandTotalPCT = grandTotalPCT + parseFloat($(this).find('.tbPTC').length == 0 || !$(this).find('.tbPTC').val() ? 0 : $(this).find('.tbPTC').val()); 

    }); 
    $('#<%=gvDockPCT.ClientID %> .grandTotalPCT').text(grandTotalPCT.toFixed(3)); 
    if (grandTotalPCT.toFixed(3) == 100.000) 
    { 
     $('#<%=gvDockPCT.ClientID %> .btnUpdatePCTD').prop('disabled', false); 
    } 
    else 
    { 
     $('#<%=gvDockPCT.ClientID %> .btnUpdatePCTD').prop('disabled', true); 
    } 
} 

答えて

0

私はOnRowDataBoundイベントを使用し、jQueryは使用しないことをお勧めします。

decimal totalValue = 0; 

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      DataRowView row = e.Row.DataItem as DataRowView; 
      totalValue += Convert.ToDecimal(row["tocht_id"]); 
     } 
     else if (e.Row.RowType == DataControlRowType.Footer) 
     { 
      if (totalValue == 100) 
      { 
       Button button = e.Row.FindControl("btnUpdatePCTD") as Button; 
       button.Enabled = false; 
      } 

      Label label = e.Row.FindControl("grandTotalPCT") as Label; 
      label.Text = string.Format("{0:N2}", GridView1.Rows.Count); 
     } 
    } 
+0

をのCssClassするボタン名を追加する必要がありました、私はすべての値を合計しています行。 blurメソッドを使用してフィールドが変更されると、合計が再計算されます。 prop( 'disabled'、false)は動作しますが、すべてのボタンを無効にします。 – user2369812

+0

$( 'input [type = "submit"]' – user2369812

+0

RowDataBoundを展開して、行とその値を含めることができます。更新された回答を参照してください。 – VDWWD

0

私は行を数えておりませんのCssClass = "btnUpdatePCTD BTN BTN-デフォルトBTN-SM"

<asp:Button ID="btnUpdatePCTD" runat="server" Text="Update" CssClass="btnUpdatePCTD btn btn-default btn-sm" OnClick="updateDockPCT" Enabled="False" /> 
関連する問題