0

無料のjqgridには、次のように定義されたブール値の隠し列IsPostedが含まれています

    {"label":null,"name":"IsPosted",
 "edittype":"checkbox","editoptions":{"value":"True:False","readonly":"readonly","disabled":"disabled"},
"align":"center",
"formatter":"checkboxFontAwesome4",
"editable":true,
"width":0,"classes":null,
"hidden":true,"stype":"select",
"searchoptions":{"sopt":["eq","ne"],
"value":":Free;true:Yes;false:No"}
    }],

この列の値が true の場合、インライン アクション ツールバーから削除、編集、およびカスタム投稿ボタンを削除する必要があります。Rhisはメソッドを使用して行われます

   disableRows('IsPosted', true);

クリック可能なチェックボックスフォーマッターで動作します。チェックボックスFontAwesome4 フォーマッタを使用する場合、

            isPosted = $(row.cells[iCol]).find(">span>div>input:checked").length > 0;

は常に false です。私も試しました

            isPosted = $(row.cells[iCol]).children("input:checked").length > 0;

しかし、これはすべてのフォーマッタで当てはまりません。フォーマッター行の代わりにも試しtemplate = "booleanCheckboxFa",ましたが、これは fontawecome アイコンを表示しません。

チェックボックスFontAwesome4フォーマッターまたはすべてのフォーマッターで動作するように修正するにはどうすればよいですか?

var disableRows = function (rowName, isBoolean) {
    var iCol = getColumnIndexByName($grid, rowName),
              cRows = $grid[0].rows.length,
              iRow,
              row,
              className,
              isPosted,
              mycell,
              mycelldata,
              cm = $grid.jqGrid('getGridParam', 'colModel'),
              iActionsCol = getColumnIndexByName($grid, '_actions'), l;
    l = cm.length;
    for (iRow = 0; iRow < cRows; iRow = iRow + 1) {
        row = $grid[0].rows[iRow];
        className = row.className;
        isPosted = false;

        if ($(row).hasClass('jqgrow')) {
            if (!isBoolean) {
                mycell = row.cells[iCol];
                mycelldata = mycell.textContent || mycell.innerText;
                isPosted = mycelldata.replace(/^\s+/g, "").replace(/\s+$/g, "") !== "";
            }
            else {
                isPosted = $(row.cells[iCol]).find(">span>div>input:checked").length > 0;
            }
            if (isPosted) {
                if ($.inArray('jqgrid-postedrow', className.split(' ')) === -1) {
                    row.className = className + ' jqgrid-postedrow not-editable-row';
                    $(row.cells[iActionsCol]).attr('editable', '0');
                    $(row.cells[iActionsCol]).find(">div>div.ui-inline-del").hide();
                    $(row.cells[iActionsCol]).find(">div>div.ui-inline-post").hide();
                    $(row.cells[iActionsCol]).find(">div>div.ui-inline-edit").hide();
                }
            }
        }
    }
};
4

1 に答える 1