【问题标题】:Checkbox OnCheckedChanged not firing when checkbox is checked through JQuery当通过 JQuery 检查复选框时,复选框 OnCheckedChanged 未触发
【发布时间】:2013-10-28 13:42:44
【问题描述】:

我使用此代码能够检查 gridview 行选择上的复选框是否有效。但是,除非我单击实际的复选框,否则后面的代码不会运行。有什么想法吗?

ASPX 代码:

<asp:GridView runat="server" ID="gvReconciledGroups" AutoGenerateColumns="false" EmptyDataText="No Reconciled Items to Batch" DataKeyNames="GroupID">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox runat="server" ID="cbFinalise" AutoPostBack="true" OnCheckedChanged="cbFinalise_OnCheckedChanged" ClientIDMode="Static" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField HeaderText="GroupID" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" DataField="GroupID" />
        <asp:BoundField HeaderText="Date" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" DataField="Date" DataFormatString="{0:dd/MM/yyyy}" ItemStyle-Width="100px" />
        <asp:BoundField HeaderText="Cashier" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" DataField="Cashier" ItemStyle-Width="100px" />

脚本:

<script type="text/javascript">
    $(function () {
        $('tr.gridview_row,tr.gridview_alternatingRow').click(function () {
            var checked = $(this).find('input[id*=cbFinalise]').prop('checked');
            $(this).find('input[id*=cbFinalise]').prop('checked', !checked);
        });
    });
</script>

代码背后:

public void cbFinalise_OnCheckedChanged(Object sender, EventArgs e)
{
    //Calculations
}

【问题讨论】:

    标签: c# javascript jquery asp.net checkbox


    【解决方案1】:

    jQuery 完全是客户端。 OnCheckedChanged 只会在由于点击了input 无线电而发生回发后在服务器端触发。试试这个:

    $('tr.gridview_row,tr.gridview_alternatingRow').click(function () {
        $(this).find('input[id*=cbFinalise]').click(); // this should force a postback
    });
    

    请注意,手动更改控件的 checked 属性是多余的,因为无论如何您都将刷新页面,并且控件的状态将由 ASP.Net 在重新呈现页面时设置。

    【讨论】:

      【解决方案2】:

      我建议您点击复选框以强制回发:

      <script type="text/javascript">
         $(function () {
             $('tr.gridview_row,tr.gridview_alternatingRow').click(function () {
                 $(this).find('input[id*=cbFinalise]').trigger('click');
             });
         });
      </script>
      

      【讨论】:

        猜你喜欢
        • 2011-08-25
        • 2019-04-13
        • 2016-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-10
        • 2017-11-09
        • 1970-01-01
        相关资源
        最近更新 更多