【问题标题】:Jquery datatables, checkboxes and asp.netJquery 数据表、复选框和 asp.net
【发布时间】:2012-02-26 22:57:33
【问题描述】:

我正在使用带有 asp.net 中继器的 Jquery 数据表,并且 90% 的一切工作正常。问题是我有一列复选框,如果我翻阅数据表检查一些框然后提交,我只会得到最后一页的详细信息,它会忘记选中复选框的所有其他页面。

这里或多或少地涵盖了这一点:

http://www.datatables.net/forums/discussion/7700/repeater-checkbox-and-paging/p1

但是,我不知道如何从 asp.net 回发中获取该数据,有人能说明我如何能够遍历转发器并获取所有复选框吗?

谢谢。

【问题讨论】:

  • 有人吗?我想我可以使用某种回发 oncheckchanged 解决方案,但这并不理想并且可能会很混乱。任何人都知道与.net 的回发模型很好地结合的更好的解决方案?

标签: jquery checkbox datatable repeater


【解决方案1】:

我会在每个复选框上添加单击处理程序,以在某些列表中添加/删除所选复选框的 id(例如,作为某些隐藏字段的内容,作为逗号分隔列表或类似内容)。

当您发布表单时,您可以从 Request["hiddenFieldName"] 中读取此内容,用逗号分隔并保存。

关于页面更改时丢失的复选框值,没有直接的解决方案。我的选择是将“页面”事件处理程序绑定到数据表 - 像这样:

$('#example')
    .bind('page',   function () { populateCheckboxes(  ); })
    .dataTable();  

函数 populateCheckboxes 将在每次页面更改时调用,您可以在此处查看表格中的所有复选框并检查它们的值是否在隐藏字段的列表中。

抱歉,没有更简单的解决方案,但这也不是太复杂的脚本。

约万

【讨论】:

    【解决方案2】:

    在您的代码隐藏中使用以下方法。 "rptrPayableItems" 是中继器的名称。

    foreach (RepeaterItem ri in rptrPayableItems.Items){                    
      CheckBox cbPaid = (CheckBox)ri.FindControl("chkbxPayItem");
      if (cbPaid.Checked){       
        //Do your operation here for checked checkbox.
      }
    }
    

    【讨论】:

    • 不幸的是,这不起作用。使用 Datatables,如果您已经分页,那么当您在其后面的代码中遍历中继器时,它不会记住在其他页面上检查的项目。
    猜你喜欢
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2018-05-29
    • 2012-10-17
    • 1970-01-01
    • 2018-08-21
    相关资源
    最近更新 更多