【问题标题】:Dynamically setting row onclick event in jquery DataTable initialization在 jquery DataTable 初始化中动态设置行 onclick 事件
【发布时间】:2016-02-04 19:18:41
【问题描述】:

我正在使用调用我的控制器函数的 ajax 将数据加载到表中。选择新页面或排序列时,我通过使用Ajax重新加载数据到同一原始控制器功能。这样我就不会立即加载所有项目,仅在需要时加载。我想让每一行都有一个 onclick javascript 函数,我可以从被点击的那一行获取列信息。有任何想法吗?控制器函数只是根据用户想要查看的结果范围和排序顺序获取我的数据。

我唯一的 javascript 代码如下:

<script>
    $(function() {
        var oTable;
        oTable = $('#tblItemModel').DataTable({
            "serverSide": true,
            "paginate": true,
            "ajaxSource": "/Finance/ItemListAjax",
            "processing": true,
            "serverMethod": "GET",
            "displayLength": 50
        });
    })
</script>

我的 html 如下:

<table class="table table-striped at-table" id="tblItemModel">
      <thead>
            <tr>
                <th>
                    Id
                </th>
                <th>
                     @Html.DisplayNameFor(model => model.Name)
                </th>
                <th>
                   @Html.DisplayNameFor(model => model.ListPrice)
                </th>
                <th>
                      @Html.DisplayNameFor(model => model.DiscountPrice)
                </th>
          </tr>
     </thead>
     <tbody class="mousechange"></tbody>
</table>

【问题讨论】:

    标签: datatables asp.net-ajax


    【解决方案1】:

    我一般都是这样工作的,在连续点击的时候获取数据……

    在dataTable()中

        $('#tblItemModel tbody').on('click', 'tr', function () {
    
           var pos = oTable.fnGetPosition(this);
           var row = oTable.fnGetData(pos);//row = It contains all the data in that row
    
        });
    

    对于数据表()

        $('#tblItemModel tbody').on('click', 'tr', function () {
    
           var pos = oTable.row(this).index();
           var row = oTable.row(pos).data();//row = It contains all the data in that row
    
        });
    

    【讨论】:

    • 这行不通,因为问题中的oTableDataTable 的一个实例。如果 oTabledataTable 的一个实例,它会起作用。将 oTable 替换为 $('#tblItemModel').dataTable() 以更正此问题。或者改用1.10.x API
    • 太棒了!那成功了。我在表的初始化中使用 "fnDrawCallback": function () { } 取得了一些进展,但你的更简单。
    猜你喜欢
    • 2013-11-17
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 2012-09-09
    相关资源
    最近更新 更多