gpt4 book ai didi

yui - 带选择列表的 YUI Datatable 客户端过滤器?

转载 作者:行者123 更新时间:2023-12-03 04:40:29 25 4
gpt4 key购买 nike

我可以使用多个下拉菜单和分页的 YUI 数据表来过滤静态数据集的行吗?

http://www.mappingbahia.org/project/iguape_dataset.html

最佳答案

每个 YAHOO.widget 组件,例如 YUI DataTable使用 YUI DataSource组件,它提供填充每个呈现的 YAHOO.widget 组件所需的数据。下面你可以看到它是如何工作的

YUI datasource

注意每个 YAHOO.widget 组件内部通过 sendRequest 调用底层 YUI 数据源方法(参见步骤 1)。现在让我们看看 sendRequest 签名

sendRequest(request, callback)
  • 请求

For remote data, this request may be a param/value string, such as "id=123&name=foo". For local data, this request maybe a simpler value such as 123. Specifying parameters may be irrelevent, so this value may be simply be null

  • 回调

它只是一个 JavaScript 对象,可以如下描述(注意每个属性)

var callback = {
success:function(request, response, payload) {
/*
* successful request is performed by success property
*/
},
failure:function(request, response, payload) {
/*
* failure request is performed by failure property
*/
},
scope:null,
argument:null
}

因此,当每个 YAHOO.widget 组件通过 sendRequest 方法调用内部 YUI 数据源时,它会传递一个如上所示的内置回调对象,该对象负责渲染 YAHOO.widget 组件本身。因此,如果您想要自定义行为,您需要调用底层 YUI 数据源并传递您的自定义回调对象来过滤 YUI 数据源提供的数据,如下所示

var datatable = // YUI datatable settings goes here

要将每个更改事件附加到每个选择,您可以使用

YAHOO.util.Event.addListener("sex", "change", function(e) {
var value = e.getTarget(e).value;

if(YAHOO.lang.isValue(value)) {
/**
* Notice i am retrieving The underlying datasource To make a call To sendRequest method
*/
datatable.getDataSource().sendRequest(null, {
success:function(request, response, payload) {
/**
* because scope property (see bellow) refers To The datatable
* this keyword can be used To get a reference To The datatable
*/

/**
* initializeTable method clear any data stored by The datatable
*/
this.initializeTable();

var rs = response.results;
var filtered = [];
for(var i = 0; i < rs.length; i++) {
/**
* Is The sex property equal To The value selected by The user ?
*/
if(rs[i]["sex"] == value) {
filtered[filtered.length] = rs[i];
}
}

this.getRecordSet().setRecords(filtered, 0);

// Update UI
this.render();
},
scope:datatable,
argument:null
});
}
});

虽然未经测试,但我很确定它会正常工作。

关于yui - 带选择列表的 YUI Datatable 客户端过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3291967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com