【问题标题】:Add a checkbox in each row for datatable jQuery using Angular.js使用 Angular.js 在数据表 jQuery 的每一行中添加一个复选框
【发布时间】:2019-06-09 07:51:15
【问题描述】:

我想使用 Angular.js 以 datatable 格式显示一些数据。

所以我做了下面的事情。

角度

<script src="~/Scripts/jquery.js"></script>
<script src="~/Scripts/jquery.dataTables.min.js"></script>
<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/angular-datatables.js"></script>

var app = angular.module('myapp', ['datatables']);
app.controller('homectrl', ['$scope', '$http', 'dtoptionsbuilder', 'dtcolumnbuilder',
    function ($scope, $http, dtoptionsbuilder, dtcolumnbuilder) {
        $scope.dtcolumns = [
            //dtcolumnbuilder.newcolumn("action", "action"),
            dtcolumnbuilder.newcolumn("objectid", "id"),
            dtcolumnbuilder.newcolumn("service_code", "service code"),
            dtcolumnbuilder.newcolumn("cond1", "condition 1"),
            dtcolumnbuilder.newcolumn("cond2", "condition 2"),
            dtcolumnbuilder.newcolumn("cond3", "condition 3"),
            dtcolumnbuilder.newcolumn("service_type", "service type"),
            dtcolumnbuilder.newcolumn("remark", "remark"),
            dtcolumnbuilder.newcolumn("description", "description")
        ]
        $scope.dtoptions = dtoptionsbuilder.newoptions().withoption('ajax', {
            url: "/home/getdata",
            type: "post"
        })
        .withpaginationtype('full_numbers')
        .withdisplaylength(10);
    }])
<div ng-app="MyApp" class="container" ng-controller="homeCtrl">

    <div ng-controller="homeCtrl">
        <table id="entry-grid" datatable="" dt-options="dtOptions" dt-columns="dtColumns" class="table table-hover">           
        </table>
<br />
    </div>

控制器

public ActionResult getdata()
    {
        DataTable dt = new DataTable();
        using (OracleConnection conn = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnAPP_NEIQC"].ToString()))
        {   
            GetData objGetData = new GetData();
            dt =  objGetData.GetDataForGrid();

            var circleList = (from DataRow dr in dt.Rows
                           select new 
                           {         
                               //Action = "",
                               OBJECTID = Convert.ToString(dr["OBJECTID"]),
                               SERVICE_CODE = Convert.ToString(dr["SERVICE_CODE"]),
                               COND1 = Convert.ToString(dr["COND1"]),
                               COND2 = Convert.ToString(dr["COND2"]),
                               COND3 = Convert.ToString(dr["COND3"]),
                               SERVICE_TYPE = Convert.ToString(dr["SERVICE_TYPE"]),
                               REMARK = Convert.ToString(dr["REMARK"]),
                               DESCRIPTION = Convert.ToString(dr["DESCRIPTION"]),
                           }).ToList();

            return Json(circleList, JsonRequestBehavior.AllowGet);
        }
    }

现在我想要的是,我想在每一行中添加一个CHECKBOX,以便我可以编辑和更新它的记录。

【问题讨论】:

  • 您要添加新行并使用复选框发布或编辑现有行吗?

标签: javascript jquery angularjs checkbox datatables


【解决方案1】:

正如 yujinpan 所说,您可以使用 select 扩展。或者干脆自己渲染一个复选框:

$scope.dtcolumns = [
  dtcolumnbuilder.newcolumn(null, '').renderWith(function(data, type, full)
     return '<input type="checkbox" class="check" data-object-id="'+full.objectid+'">'
  }),
  dtcolumnbuilder.newcolumn("objectid", "id"),
  ...
]

现在您可以通过.check 类将委托事件处理程序与复选框关联起来。


按照here 或文档here 中的说明使用dtInstance(查看页面底部)。现在你可以做类似的事情

$('#entry-grid').on('click', '.check', function() {
   var data = $scope.dtInstance.DataTable.row($(this).closest('tr')).data()
})

【讨论】:

  • 我根据需要得到了复选框。现在,如何添加标题和复选框以获取当前行数据?任何想法先生。感谢您的有用回答
  • alert(data); 没有任何警报??如何检查值是否正确
  • 同样出现错误Uncaught TypeError: Cannot read property 'DataTable' of undefined
  • @BN,你有没有使用回调来设置dtInstance?使用链接的 SO 线程中的最后一个示例 -> stackoverflow.com/a/50624700/1407478
  • 像这样尝试$scope.dtInstance = {};,但仍然无法正常工作。同样的错误。还添加了table 这样&lt;table id="entry-grid" datatable="" dtinstance="dtInstance" dt-options="dtOptions" dt-columns="dtColumns" class="table table-hover"&gt;&lt;/table&gt;
【解决方案2】:

是这个吗?选择插件。 withSelect

【讨论】:

  • 是的这个..但它没有被选中。还有如果我想一次全选怎么办??
  • 是的,看看这个..rowSelect
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-20
  • 2010-11-05
  • 2012-08-06
  • 1970-01-01
  • 2021-04-04
  • 2012-06-05
相关资源
最近更新 更多