限制和控制可以排序的数据表列?

Limit and control the datatable columns which can be ordered?

我有数据表,其中的列是 No、LastName、FirstName、Details。目前在所有 4 列上都出现了 asc 和 desc 符号。我只需要限制 LastName 列和 FirstName 的顺序。下面是执行服务器处理的我的脚本。下面是我如何使用 php 代码来获取数据并填充到我的网格中。问题是第一列不是。因此,当我使用此代码时,我只是根据第 No 列进行订购。如何使其仅按姓氏或名字排序?

$requestData= $_REQUEST;
        $columns = array( 
        // datatable column index  => database column name           
            0 => 'fName',
            1=> 'lName'
        );      

        $query = "Select fName,lName,details From User";

    if(!empty($requestData['search']['value']) ) {   
           $query.=" AND ( fName LIKE :searchKey )";  
    }
    $selectQueryResult1 = $link->prepare($query);       

        $arr = $selectQueryResult1->errorInfo();    
        $totalData=$selectQueryResult1->rowCount();
    $totalFiltered = $totalData;  

    $query.=" ORDER BY ". $columns[$requestData['order'][0]['column']]."   ".$requestData['order'][0]['dir']."  LIMIT ".$requestData['start']." ,".$requestData['length']."   ";
    //echo "query : ".$query;

    $selectQueryResult1 = $link->prepare($query);
    if(!empty($requestData['search']['value']) ) {   // if there is a search parameter, $requestData['search']['value'] contains search parameter

         $searchKey = $requestData['search']['value'];
         $searchKey="%$searchKey%";
                 $selectQueryResult1->bindParam(':searchKey',$searchKey );


    }
    $selectQueryResult1->execute();



    $i=0;
    $i=$requestData['start']+$i;
    while($row = $selectQueryResult1->fetch())
        {
         $nestedData=array(); 
         $i++;

     $nestedData[] = $i;
         $nestedData[] = $row["fName"];
         $nestedData[] = $row["lName"];
         $nestedData[] = $row["details"];

         $data[] = $nestedData;
        }

        if($totalData>0){
        $json_data = array(
            "draw"            => intval( $requestData['draw'] ),   
            "recordsTotal"    => intval( $totalData ),  
            "recordsFiltered" => intval( $totalFiltered ), 
            "data"            => $data   
            );
    }
    else{
        $json_data = array(
            "draw"            => intval( $requestData['draw'] ),   
            "recordsTotal"    => intval( $totalData ),  
            "recordsFiltered" => intval( $totalFiltered ), 
            "data"            => ""   
            );
    }

您想让用户选择仅按姓氏或名字列进行排序,对吗?

这是一个 DataTables 初始化选项:

columns.orderable 启用或禁用此列的排序

参见:Options了解详情。