YUI:过滤数据表客户端

时间:2011-09-07 05:36:52

标签: javascript yui

我有一个从服务器获取数据的数据源。然后将其用于数据表中。我希望能够过滤客户端表中的数据,而无需再次调用服务器。

// Data source definition
myDataSource = new YAHOO.util.DataSource("myurl");
myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
myDataSource.connXhrMode = "queueRequests";
myDataSource.responseSchema = {
    resultsList: "ResultSet.Result",
    fields: ["field1","field2"]
}

// Datatable definition
myDataTable = new YAHOO.widget.DataTable("container", myColumnDefs,myDataSource, {});

1 个答案:

答案 0 :(得分:0)

Subclass DataSource并覆盖sendRequest方法,以便使用您自己的过滤结果集作为results参数调用传入的回调。

filterDataSource=function(arg) {
    filterDataSource.superclass.constructor.call(this,arg);
}

YAHOO.extend(filterDataSource,YAHOO.util.XHRDataSource);

filterDataSource.prototype.sendRequest=function(request, callback) {
    var wrapCallBack=function (request,results,error) {
        // !!! do filtering on results here !!!
        callback.success.call(this,request,results,error);
    };
    filterDataSource.superclass.sendRequest.call(this,request, {
        success: wrapCallBack, argument: callback.argument
    });
}

并使myDataSource成为new filterDataSource而不是new Yahoo.util.DataSource

免责声明:此代码可能无法正常编写;我把它从一些旧的工作代码中删除了,很可能会跳过一些关键的部分。不过,我希望它传达了基本的想法。