将列设为复选框

我用数据库请求加载网格(在PHP中使用CodeIgniter abd jqgrid helper)。我没有任何问题可以显示带有我的数据的漂亮网格。


我想显示一个带有复选框的新列,以选择一个或几行。


加载后无法添加新列。因此,我尝试这样做:-在创建网格时添加了列,-在创建时,我添加了带有函数的'loadComplete'选项,-在播放时,函数被执行。这里是 :


function ajoutCheckBox() {

    var grille = $("#users_grid");


    // Construire les checkbox dans la colonne D

    grille.setColProp('Dest', {editable: true});

    grille.setColProp('Dest', {edittype: 'checkbox'});

    grille.setColProp('Dest', {editoptions: { value: "True:False" }});

    grille.setColProp('Dest', {formatter: "checkbox"});

    grille.setColProp('Dest', {formatoptions: { disabled: true}});




    // Insérer la valeur false dans toutes les lignes de la colonne D

    var index   = grille.jqGrid('getGridParam', '_index');


    for(i in index) {

        grille.jqGrid('setCell', i, 'Dest', 'False', {});

    }

}

如您所见,gris称为“ #users_grid”,列名为“ Dest”。


我的问题:没有附加内容...


谢谢您的帮助 !


XB


编辑:我发现以下解决方案:


复选框列添加在colModel语句中,

为了初始化该值并激活复选框(在创建!时将其禁用),我使用了"loadComplete"回调函数。

代码很简单,但我很难找到...


网格创建:


loadComplete: function() { ajoutCheckBox() },

colModel:[.... {"name":"Env","index":"Env","width":30,"hidden":false,"align":"left","edittype":"checkbox","formatter":"checkbox","formatoptions":"{ disabled: false}","editable":true,"editoptions":{"editoptions":"{ value: \"True:False\",  defaultValue: \"False\" }}","size":10}}, ....]

回调函数:


function ajoutCheckBox() {

    var grille = $("#users_grid");

    var index = grille.jqGrid('getGridParam', '_index');


    for(i in index) { // Pour toutes les lignes du tableau

        grille.jqGrid('setCell', i, 'Env', 'False');

        $('#'+i).find("input:checkbox").removeAttr('disabled');

    }

}

它似乎没有被优化,但是可以工作!


九州编程
浏览 595回答 3
3回答

呼如林

对不起,但我不完全了解您的工作。如果formatter: "checkbox"用于某列,则复选框的值将根据输入值自动设置(“ true”,“ yes”或“ 1”会在选中复选框后进行设置)。无需执行其他操作loadComplete。如果希望不禁用复选框,则需要使用formatoptions: { disabled: false}该列的属性 。要检测复选框状态的更改,可以使用beforeSelectRow回调。setCell例如,可以使用它来保存复选框的新状态

慕田峪7331174

我在创建时添加了列的属性,它更加简单并且有效。我正在使用loadComplete回调函数来初始化复选框的布尔值。但是,尽管如此,它们还是不可编辑的editable:true。我正在寻找原因。 
打开App,查看更多内容
随时随地看视频慕课网APP