1

我在 init 方法中启动加载面板并将其隐藏在 ReturnDataPayload 事件中。当数据表中有一些值时,这工作得很好。但是当没有从数据库返回数据时,控件不会返回数据PayLoad 事件。请帮助我找到即使响应没有任何数据也会被触发的事件,或者告诉我隐藏加载面板的方法。

4

1 回答 1

0

如果您想要自定义行为,请使用 dataTable 的 dataSource 的 DataSource 的 sendRequest 方法

(function() {
    var YdataTable  = YAHOO.widget.DataTable,
        YdataSource = YAHOO.util.DataSource;

    var settings = {
        container:"<DATATABLE_CONTAINER_GOES_HERE>",
        source:"<URL_TO_RETRIEVE_YOUR_DATA>",
        columnSettings:[
            {key:"id", label:"Id"}
        ],
        dataSourceSettings:{
            responseType:YdataSource.TYPE_JSON,
            responseSchema:{
                resultsList:"rs",
                fields:[
                    {key:"id"}
                ]
            }
        },
        dataTableSettings:{
            initialLoad:false
        }
    }

    var dataTable = new YdataTable(
                    settings.container, 
                    settings.columnSettings, 
                    new YdataSource(
                    settings.source, 
                    settings.dataSourceSettings), 
                    settings.dataTableSettings);
})();

请记住无论您的数据是哪个来源:XML、JSON、JavaScript 对象、TEXT,您总是会通过 DataSource 的 sendRequest 方法以统一的方式获取您的数据。因此,当您想要检索数据并同时添加自定义行为时,请使用它

dataTable.getDataSource().sendRequest(null, {
    success:function(request, response, payload) {
        if(response.results.length == 0) {
            // No data returned
            // Do what you want right here
            // You can, for instance, hide the dataTable by calling this.setStyle("display", "none");
        } else {
            // Some data returned
            // If you want to use default the DataTable behavior, just call

            this.onDataReturnInitializeTable(request, response, payload);
        }
    },
    scope:dataTable,
    argument:dataTable.getState()
});

响应的属性是

  • results(Array):你的数据源的统一方式。对于结果数组中的每个对象,根据 responseSchema 的 fields 属性,都有一个属性。注意我使用 response.results.length来验证是否返回了一些数据
  • error(布尔值):表示数据错误
  • cached (Boolean): 表示缓存的响应
  • meta (Object):模式解析的元数据

YUI dataTable 页面,查找Loading data at runtime可以看到 YUI dataTable 提供的一些内置函数

我希望它是有用的,并随时为你想要的关于 YUI 的任何其他问题寻求帮助。查看YUI dataTable 的不错功能的演示页面

于 2010-12-29T02:55:56.883 回答