【问题标题】:server side pagination in jquery datatablejquery数据表中的服务器端分页
【发布时间】:2016-10-21 00:14:21
【问题描述】:

我正在显示数据。因为它包含超过 1000 行数据。我想要一个服务器端分页而不是 jquery 数据表提供的。正如我所注意到的,数据表会加载所有 1000 个查询,并且只进行客户端分页。 这是我的控制器

 function view_ftth_report()
{

    if ($this->data['permission_ftth_report'] == '1') {
    $this->load->model('staff_activity_model');
    $this->data['records'] = $this->staff_activity_model->view_ftth_report();

    $this->data['main_template'] = 'staff_activity/staff_activity_main';
    $this->data['inner_template'] = 'staff_activity/ftth/staff_activity_ftth_report_view';
    $this->data['inner_nav'] = 'staff_activity/staff_activity_nav';
    $this->load->view('common/common', $this->data);
        }
    else{
        $this->data['main_template'] = 'staff_activity/staff_activity_main';
        $this->data['inner_template'] = 'staff_activity/staff_activity_denied';
        $this->data['inner_nav'] = 'staff_activity/staff_activity_nav_denied';
        $this->load->view('common/common', $this->data);
    }
}

这是我的模型。

function view_ftth_report(){
    $sql = "SELECT * FROM ct_staff_activity_ftth ORDER BY date DESC limit 20  ";
    $data = array();
    $result = $this->db->query($sql);
    foreach($result->result_array() as $row)
    {
        $data[] = $row;
    }
    return $data;
}

这是我的观点。我用ajax来调用记录。

<script type="text/javascript">

$(function() {
    $("#data_tbl").dataTable({
        "iDisplayLength": 50
    });

});
</script>
<div class="row">
<div class="col-md-12">
    <div class="box ">
        <div class="box-body">
            <div class="row">
                <div class="col-md-12">
                        <a href="<?php echo base_url();?>staff_activity/date_report_index"><button style="margin: 15px; padding: 10px; border-radius: 10px; border-collapse: collapse " class="btn btn-success btn-sm">Filter By Date</button></a>

                    <div class="col-md-12 table-responsive">
                        <table class="table table-striped table-responsive" id="data_tbl">
                            <h4>Recent Entries</h4>
                            <thead>
                            <tr>
                                <th>Sn.</th>
                                <th>Client's Name</th>
                                <th>Address</th>
                                <th>Fiber Length</th>
                                <th>Phone Number</th>
                                <th>Package</th>
                                <th>Result</th>
                                <th>Date</th>
                                <th>Team Name</th>
                                <th>Remarks</th>
                                <th>Edit</th>
                                <th>Delete</th>

                            </tr>
                            </thead>
                            <tbody id="result">
 <?php

                            $count = 0;

                            foreach($records as $rec){
                                $count = $count+1;

                                ?>
                                <tr>
                                    <td><?php echo $count; ?></td>
                                    <td><?php echo $rec['client_name']; ?></td>
                                    <td><?php echo $rec['address']; ?></td>
                                    <td><?php echo $rec['fiber_length']; ?></td>
                                    <td><?php echo $rec['phone_number']; ?></td>
                                    <td><?php echo $rec['package']; ?></td>
                                    <td><?php echo $rec['result']; ?></td>
                                    <td><?php echo $rec['date']; ?></td>
                                    <td><?php echo $rec['team_name']; ?></td>
                                    <td><?php echo $rec['remarks']; ?></td>
                                    <td><a href="<?php echo base_url(); ?>staff_activity/edit_ftth_report/<?php echo $rec['id']?>">Edit</a></td>
                                    <td><a href="javascript:void(0)" onclick="chk('<?php echo base_url(); ?>staff_activity/delete_ftth_report/<?php echo $rec['id']  ?>')">Delete</a></td>

                                </tr>

                                <?php

                            }

                            ?>
                            </tbody>

                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

【问题讨论】:

    标签: jquery ajax codeigniter datatable pagination


    【解决方案1】:

    我最近还在我的项目中集成了DataTable。 实际上在codeigniter 中有一些library 可用于DataTable。 请在下面找到一些有用的libraries

    1. Ignited-Datatables
    2. Codeigniter-DataTables

    因此,您只需按照readme 中给出的说明进行操作即可。 我正在为我在我的项目中集成的 Ignated-Datatables 提供示例。

    CODEIGNITER

    1. 首先将DataTable.php 移动到您的application\library 文件夹中。
    2. 加载您的controllerconstructor

      $this-&gt;load-&gt;library('Datatables');

    3. $this-&gt;datatables-&gt;select( pass the column which you want to display in table and manage order also respect to your table).

    4. $this-&gt;datatables-&gt;from('ct_staff_activity_ftth'); 在此处传递表名。

    JAVASCRIPT

    1. 在您的视图文件中包含dataTable.min.js
    2. 将代码放入document ready阶段。

      $('#data_tbl').dataTable( { processing: true, serverSide: true, ajax: { "url": "/index.php/DataTableExample/dataTable", "type": "POST" }, columns: [ { data: "s.s_name" }, {data : "c.c_name"}, {data : "c.c_zip"}, { data: "$.city_state_zip" } //refers to the expression in the "More Advanced DatatableModel Implementation" ], aaSorting: [ [0, 'desc'] // provide the default sorting column with order numer. ] });

    希望对您有所帮助。如果您需要任何进一步的帮助,请告诉我。

    【讨论】:

    • 感谢您的回答。我会通过你的答案。如果我需要进一步的帮助,会回复你
    猜你喜欢
    • 1970-01-01
    • 2016-01-05
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 2012-07-18
    • 2012-03-25
    相关资源
    最近更新 更多