首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Yajra DataTable:如何阻止索引列(具有行序列号)在其他列被排序时更改

Laravel Yajra DataTable:如何阻止索引列(具有行序列号)在其他列被排序时更改
EN

Stack Overflow用户
提问于 2021-06-30 14:56:32
回答 1查看 282关注 0票数 0

我正在使用Yajra-DataTable for Laravel 8应用程序。除了一个小问题之外,Yajra DT的所有功能都工作得很好。我的第一列是DT_RowIndex,被添加为->addIndexColumn()。这些是行序列号(1,2,3...)。在这一列上,排序自然是假的。但是,当对其他列进行排序时,这些序列号也会随之排序。我希望这个列在表排序时保持不变。有人能为这个问题提出解决方案吗?下面是我使用的代码。

控制器:

代码语言:javascript
复制
public function index(Request $request)
    {
      if ($request->ajax()) 
      {
         $hospitals = Hospital::join('District', 'District.dt_id', '=', 'Hospital.dt_id')
                              ->join('Tehsil', 'Tehsil.teh_id', '=', 'Hospital.teh_id')
                              ->orderBy('District.dt_name', 'asc')->orderBy('Tehsil.teh_name', 'asc')
                              ->get(['Hospital.hl_id', 'Hospital.hl_name','Tehsil.teh_name', 'District.dt_name', 'Hospital.assessment_status']);
                            

         return Datatables::of($hospitals)
                        ->addIndexColumn()
                        ->addColumn('action', function($row){
         $btn = '<a href="/hospital/'.$row->hl_id.'" class="btn btn-info btn-sm text-center">View</a>&nbsp;&nbsp;';
         $btn = $btn.'<a href="/hospital/'.$row->hl_id.'/edit" class="edit btn btn-primary btn-sm text-center">Edit</a>&nbsp;&nbsp;';
         $btn = $btn.'<a href="'.route('HospitalDeleteRoute', $row->hl_id).'" class="btn btn-danger btn-sm" onclick="return confirm(\'Are you sure you want to delete the hospital: '.$row->hl_name.'\')">Delete</a>'; 
                                  
         return $btn;
                           })
                       ->rawColumns(['action'])
                        ->make(true);
      }
    return view('hospitals.index');
   }

索引php文件

代码语言:javascript
复制
<table class="table table-sm table-striped table-bordered hospital-DT" id="tbl_hosp">
      <thead class="thead-dark" align="center">
         <tr class="th_sort_color">
            <th>S/No</th>
            <th>Hospital Name</th>
            <th>Tehsil</th>
            <th>District</th>
            <th>Assessment Status</th>
            <th>Action</th>
         </tr>
      </thead>
      <tbody>
      </tbody>
   </table>

脚本:

代码语言:javascript
复制
$(function () {
       var table = $('.hospital-DT').DataTable({
        processing: true,
        serverSide: false,
        searchable: true,
        orderable:true,
        order: [],
        lengthMenu: [[10, 25, 50, 100, 500], [10, 25, 50, 100, 500]],
        ajax: "{{ route('hospital.index') }}",
        'columns': [
            {data: 'DT_RowIndex', name: '', orderable: false, searchable: false},
            {data: 'hl_name', name: 'name'},
            {data: 'dt_name', name: 'name'},
            {data: 'teh_name', name: 'name'},
            {data: 'assessment_status', name: 'name'},
            {data: 'action', name: 'action', orderable: false, searchable: false}
        ],
   //      'columnDefs': [ {
   //      'targets': [0,5], /* column index */
   //      'orderable': false, /* true or false */
   //   }]
    });
  });
EN

回答 1

Stack Overflow用户

发布于 2021-10-05 08:42:12

您可以从查询中获取行的索引,我使用ms.sql并执行以下操作:

代码语言:javascript
复制
$hospitals = Hospital::select([
       DB::raw('ROW_NUMBER() OVER(ORDER BY id ASC) AS rownum')
])->...

从那里,你得到rownum作为row的索引列,并在你的脚本中调用它,你可以修改这个代码"ORDER BY id ASC“来得到你想要的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68189812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档