2011-09-07 88 views
1

我有一个从服务器获取数据的数据源。然后将其用于数据表。我希望能够过滤客户端表中的数据,而无需再调用服务器。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, {}); 

回答

0

子类DataSource和让与您通话设置为results论证自己的过滤结果传入的回调覆盖sendRequest方法。

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

声明:此代码可能无法正常工作;我把它从一些旧的工作代码中剥离出来,很可能会跳过一些关键的部分。尽管如此,我希望它传达了基本的想法。