3

私はこれを一日中グーグルで検索してきましたが、答えが見つからないようです。もちろんここでも検索しましたが、見つけられませんでしたが、どこかで答えを逃した場合はご容赦ください。やってみました!

CheckBox フィールドを含む YUI DataTable があります。テーブルの DataSource として使用している着信 JSON データに基づいて、このボックスをオンまたはオフにしたいと思います。何が起こっているのかというと、チェックボックスがすべての行でチェックされており、フィールド値が「true」の場合にのみボックスをチェックするように指示する方法がわかりません。これが今の私のコードです:

createDataTable : function (data) {
        var columnDefs =  [
                            { key: "Well", width : 30 },
                            { key: "Value", field: "ReducedValue", width : 100 },
                            { key: "Hit", width : 30, formatter:YAHOO.widget.DataTable.formatCheckbox},
                            { key: "Reason", field: "reason", width : 200 }                                
                          ];
        var dataSource = new YAHOO.util.DataSource(data);
        dataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
        dataSource.responseSchema = {
          fields : [ "Well", "ReducedValue", "Hit", "reason" ]
        };

        var dataTable = new YAHOO.widget.ScrollingDataTable("data-table", columnDefs, dataSource, {height:"10em"});
        $(".yui-dt table").css( { width : imageW } );

      }

ここで気になるのは「ヒット」フィールドです。このフィールドの値が「true」の受信データは、チェックボックスをオンにする必要があります。それ以外の場合はオフにする必要があります。

助けてくれてありがとう!

ウィリアム

4

1 に答える 1

1

formatCheckboxの実際のコードは次のとおりです。推測しているだけですが、実際には値がtrueである文字列「false」または文字列「0」を渡している可能性があります。

 /**
     * Formats a CHECKBOX element.
     *
     * @method DataTable.formatCheckbox
     * @param el {HTMLElement} The element to format with markup.
     * @param oRecord {YAHOO.widget.Record} Record instance.
     * @param oColumn {YAHOO.widget.Column} Column instance.
     * @param oData {Object | Boolean} Data value for the cell. Can be a simple
     * Boolean to indicate whether checkbox is checked or not. Can be object literal
     * {checked:bBoolean, label:sLabel}. Other forms of oData require a custom
     * formatter.
     * @static
     */
    formatCheckbox : function(el, oRecord, oColumn, oData) {
        var bChecked = oData;
        bChecked = (bChecked) ? " checked=\"checked\"" : "";
        el.innerHTML = "<input type=\"checkbox\"" + bChecked +
                " class=\"" + DT.CLASS_CHECKBOX + "\" />";
    },
于 2010-11-09T13:20:07.013 に答える