YUI: получить все данные строки при нажатии на ячейку - PullRequest
1 голос
/ 24 февраля 2011

Я пытаюсь сделать пример с датой из YUI-2.8.2.

 YAHOO.example.DynamicData = function() {
   // Column definitions


 myColumnDefs = [ // sortable:true enables sorting
    {key:"id", label:"id", sortable:true},
    {key:"date", label:"date", sortable:true},
    {key:"price", label:"price", sortable:true},
    {key:"number", label:"number", sortable:true}

];

// Custom parser
var stringToDate = function(sData) {
    var array = sData.split("-");
    return new Date(array[1] + " " + array[0] + ", " + array[2]);
};
var appendTestBtn = function(sData){
    return "<input type=\"button\" value=\"Cancel\" onClick=\"javascript:onGetRowData();\">";
};

// DataSource instance
 myDataSource = new YAHOO.util.DataSource("http://developer.yahoo.com/yui/examples/datatable/assets/php/json_proxy.php?");
myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
myDataSource.responseSchema = {

    resultsList: "records",
    fields: [
        {key:"id"},
        {key:"date"},
        {key:"price"},
        {key:"number",parser:appendTestBtn}
    ],
    metaFields: {
        totalRecords: "totalRecords" // Access to value in the server response
    }
};

// DataTable configuration
 myConfigs = {
    initialRequest: "sort=id&dir=asc&startIndex=0&results=25", // Initial request for first page of data
    dynamicData: true, // Enables dynamic server-driven data
    sortedBy : {key:"id", dir:YAHOO.widget.DataTable.CLASS_ASC}, // Sets UI initial sort arrow
    paginator: new YAHOO.widget.Paginator({ rowsPerPage:5 }) // Enables pagination 
};

// DataTable instance
 myDataTable = new YAHOO.widget.DataTable("dynamicdata", myColumnDefs, myDataSource, myConfigs);
// Update totalRecords on the fly with value from server
    myDataTable.handleDataReturnPayload = function(oRequest, oResponse, oPayload) {
    oPayload.totalRecords = oResponse.meta.totalRecords;
    return oPayload;
}



return {
    ds: myDataSource,
    dt: myDataTable
};




 }();

В источнике я добавляю кнопку в столбце «число» (используя метод appendTestBtn).Я хочу: когда я нажимаю эту кнопку, я могу получить все данные этой строки (в настоящее время я получаю только данные этой ячейки).

Пожалуйста, помогите мне.

Спасибо.

1 Ответ

3 голосов
/ 24 февраля 2011

Вместо этого вы можете использовать форматер:

var buttonFormatter = function (elCell, oRecord, oColumn, oData) {
    return "<input type=\"button\" value=\"Cancel\" />"
};

в определении столбца:

 myColumnDefs = [ // sortable:true enables sorting
    {key:"id", label:"id", sortable:true},
    {key:"date", label:"date", sortable:true},
    {key:"price", label:"price", sortable:true},
    {key:"number", label:"number", formatter: buttonFormatter ,sortable:true}

];

и в вашей схеме не использовать синтаксический анализатор:

fields: [
        {key:"id"},
        {key:"date"},
        {key:"price"},
        {key:"number"}
    ],

Теперь в вашем методе buttonFormatter у вас есть доступ к строке следующим образом:

oRecord.getData("id")
oRecord.getData("date")
oRecord.getData("price")

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...