2016-11-24 61 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" />