Как я могу получить проверенное состояние CheckBox в YUI DataTable, которое будет установлено данными в источнике данных? - PullRequest
2 голосов
/ 09 ноября 2010

Я гуглил это весь день и не могу найти ответ.Также искали здесь, конечно, и также не нашли его, но, пожалуйста, прости меня, если я где-то пропустил ответ.Я попытался!

У меня есть таблица данных YUI, которая содержит поле CheckBox.Я хотел бы, чтобы этот флажок был отмечен или снят, основываясь на входящих данных 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 } );

      }

Поле «Hit» - это то, что меня интересует здесь.Для входящих данных со значением 'true' для этого поля должен быть установлен флажок, в противном случае его не нужно проверять.

Спасибо за любую помощь!

Уильям

1 Ответ

1 голос
/ 09 ноября 2010

Фактический код для formatCheckbox приведен ниже. Я просто догадываюсь, но, возможно, вы передаете строку 'false' или строку '0', которые на самом деле имеют значение true.

 /**
     * 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 + "\" />";
    },
...