我有一个从服务器获取数据的数据源。然后将其用于数据表中。我希望能够过滤客户端表中的数据,而无需再次调用服务器。
// 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, {});
答案 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
。
免责声明:此代码可能无法正常编写;我把它从一些旧的工作代码中删除了,很可能会跳过一些关键的部分。不过,我希望它传达了基本的想法。