0

我有一个配置如下的数据表

function handleTabChange(e){    
var errDataSource = new YAHOO.util.DataSource("/webapp/somecontroller");
    errDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
    errDataSource.responseSchema = { 
              fields: [
                        "id","name","err_msg","err_sugg","created_at","created_by","rev"
                       ] 
              };
    var errColDef = [ 
                   {key:"error_id", sortable:true}, 
                    {key:"created_at", formatter:YAHOO.widget.DataTable.formatDate, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}}, 
                    {key:"name",  sortable:true}, 
                    {key:"rev",  sortable:true}, 
                    {key:"err_msg"}, 
                    {key:"err_sugg" }, 
                    {key:"created_by"} 
                ]; 
    var errorDataTable = new YAHOO.widget.Datatable("errorDataTable",errColDef, errDataSource,{scrollable:true,width:"100%"});
    errorDataTable.render();
}

在我要填充此数据表的选项卡中,添加以下行

tab3.addListener('click', handleTabChange);

当我调试这个时,我可以看到控制流过

处理选项卡更改

但我的网络显示数据源没有进行任何调用。

如果我正确地将数据表集成到选项卡视图中,您能帮帮我吗?

4

2 回答 2

0

我知道这不是一个完整的答案,但我已经有一段时间没有使用 YUI2 了。这是我记得的,希望对你有帮助。在隐藏容器中创建 DataTable 时出现问题,特别是在需要进行大量大小计算以将标题与内容同步时的滚动 DataTable。在某些浏览器中,尝试读取不可见元素的宽度或高度会导致错误。如果您在调试器中运行代码并启用“错误中断”选项,很有可能会看到一些错误发生。这可以防止 DataTable 完成初始化,因此它在获取数据时永远不会到达该部分。

我不记得名字了,但是浏览了我发现的 API 文档onShow()是为了解决这个问题。

此外,听到单击选项卡并不能保证该选项卡的面板是可见的。您应该收听activeTabChange 选项卡可见后触发的 TabView 上的 。

对不起,如果我不能提供太多帮助,已经有一段时间了。干杯。

于 2013-07-20T07:26:22.470 回答
0

我有一段时间没有使用 YUI2(我强烈建议您不要使用 YUI2 编写任何新代码并切换到 YUI3 来获取新内容),但看起来您缺少initialRequest选项或调用sendRequestDataSource。

DataTable 控件:XHR上的JSON 数据示例展示了如何使用initialRequestsendRequest.

于 2013-07-20T18:38:30.307 回答