diff --git a/application/common/controller/Backend.php b/application/common/controller/Backend.php
index b52ee94..754cb08 100644
--- a/application/common/controller/Backend.php
+++ b/application/common/controller/Backend.php
@@ -533,11 +533,27 @@ class Backend extends Controller
             if (is_array($adminIds)) {
                 $this->model->where($this->dataLimitField, 'in', $adminIds);
             }
+
             $fields = is_array($this->selectpageFields) ? $this->selectpageFields : ($this->selectpageFields && $this->selectpageFields != '*' ? explode(',', $this->selectpageFields) : []);
-            $datalist = $this->model->where($where)
-                ->order($order)
-                ->page($page, $pagesize)
-                ->select();
+            
+            //如果有primaryvalue,说明当前是初始化传值,按照选择顺序排序
+            if ($primaryvalue !== null) {
+                $primaryvalue = array_unique(is_array($primaryvalue) ? $primaryvalue : explode(',', $primaryvalue));
+                $primaryvalue = implode(',', array_map([$this->model->getConnection(), 'quote'], $primaryvalue));
+                
+                $datalist = $this->model->where($where)
+                                        ->orderRaw("FIELD(`{$primarykey}`, {$primaryvalue})")
+                                        ->page($page, $pagesize)
+                                        ->field($this->selectpageFields)
+                                        ->select();
+            } else {
+                $datalist = $this->model->where($where)
+                                        ->order($order)
+                                        ->page($page, $pagesize)
+                                        ->field($this->selectpageFields)
+                                        ->select();
+            }
+
             foreach ($datalist as $index => $item) {
                 unset($item['password'], $item['salt']);
                 if ($this->selectpageFields == '*') {