Php 如何使用数据库而不是localstore jqgrid保存网格的状态

Php 如何使用数据库而不是localstore jqgrid保存网格的状态,php,jqgrid,grid,Php,Jqgrid,Grid,我有一个使用jqGrid PHP API和Choose Columns插件(显示/隐藏列)创建的网格。我需要添加保存网格状态的功能(在执行任何筛选、更改列顺序或隐藏任何列之后) 我看过一些帖子,它们使用cookies或localStore来保存网格状态。但是,我希望能够将其保存在数据库中,以便在用户下次登录系统时恢复它 以下是我为网格编写的PHP代码: require_once JQGRID_PATH."php/jqGrid.php"; require_once JQGRID_P

我有一个使用jqGrid PHP API和Choose Columns插件(显示/隐藏列)创建的网格。我需要添加保存网格状态的功能(在执行任何筛选、更改列顺序或隐藏任何列之后)

我看过一些帖子,它们使用cookies或localStore来保存网格状态。但是,我希望能够将其保存在数据库中,以便在用户下次登录系统时恢复它

以下是我为网格编写的PHP代码:

    require_once JQGRID_PATH."php/jqGrid.php";
    require_once JQGRID_PATH."php/jqGridPdo.php";

    // Connection to the server
    $conn = new PDO(DB_DSN,DB_USER,DB_PASS);

    // Create the jqGrid instance
    $grid = new jqGridRender($conn);

    // Write the SQL Query
    $grid->SelectCommand = 'SELECT timestamp, user_name, action_type FROM audit_log';

    // set the ouput format to json
    $grid->dataType = 'json';

    // Let the grid create the model
    $grid->setColModel();

    // Set the url from where we obtain the data
    $grid->setUrl('audit_log');

    // Set grid caption using the option caption
    $grid->setGridOptions(array(
        "caption"=>"Audit Log Report",
        "height"=>470,
        "width" => 1100,
        "rowNum"=>25,
        "shrinkToFit"=>false,
        "sortname"=>"timestamp",
        "sortorder"=>"desc",
        "rowList"=>array(25,50,100)
    )); 

    $grid->navigator = true;
    $grid->setNavOptions(
        'navigator', array(
            "excel"=>true,
            "add"=>false,
            "edit"=>false,
            "view"=>false,
            "del"=>false,
            "pdf"=>true
        )
    );

    $grid->renderGrid('#grid','#pager', true, null, null, true, true, true);
此外,我所看到的使用localStore保存网格状态的帖子都是使用jQuery而不是jqGrid PHP套件构建的。关于如何使用jqGrid PHP API实现这一点,有什么想法吗

任何帮助都将不胜感激


谢谢

如果网格选项是数组,为什么不序列化该数组并将其保存到与该用户关联的记录中的数据库中

如果您想真正喜欢,可以使用
persist()
load()
等方法扩展jqGridRender类,将选项持久化到DB并重新加载

因此,假设您有某种类型的用户对象,您可能会执行以下操作:

$grid = new persistingJQGrid($conn); // instantiate your special extended class
$grid->setUser($user);
$grid->load();
...
或在坚持时:

$grid->persist()
在中,我展示了如何在
localStorage
中保存一些表示网格状态的信息,以及如何使用这些信息创建网格。在答案中,您可以找到
saveObjectInLocalStorage
方法,该方法使用
window.localStorage.setItem
保存表示本地存储中状态的对象。在数据库中保存信息时,只需将
window.localStorage.setItem
替换为
$.ajax
,即可将信息发送到服务器。同样,您可以将网格初始化期间使用的一次
getObjectFromLocalStorage
替换为以前保存的从数据库读取的数据,以直接初始化数据。因此,该方法可以很容易地修改到任何保持网格状态的位置