2016-11-24 102 views
0

我有一個gridview和在頁腳中,它將總價值在grandTotalPCT。如果grandTotalPCT不等於100,我希望按鈕btnUpdatePCTD保持禁用狀態,如果它等於100,則啓用該按鈕。在gridview中啓用按鈕與jquery

下面的代碼是從另一個函數調用的,該函數的作用是更改值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

我不算行,我總所有的價值行。當使用模糊方法更改字段時,總數將被重新計算。 – user2369812

+0

$('input [type =「submit」]')。prop('disabled',false)可以工作,但會禁用所有按鈕。 – user2369812

+0

您可以展開RowDataBound以包含行及其值,請參閱我的更新答案。 – VDWWD

0

我不得不添加的按鈕名稱的CssClass的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" />