0

我正在尝试导出使用对象 MVCgrid 创建的网格。

我发现我可以将当​​前页面添加到对象“MVCGrid_Export”而不是提供导出按钮和功能的对象“MVCGrid”。

顺便说一句,我在导出过程中遇到错误:

“致命错误:在第 42 行的 ..\agiletoolkit\atk4-addons\misc\lib\Export.php 中调用非对象的成员函数 getField()”

在那一行,“$b[] = $this->__getHeaderModel()->getField($ a)->caption();”,我发现“$this-> _getHeaderModel()”的结果是一个字符串我要导出的模型,而不是该模型的对象,这是我需要的项目。

这是我页面的代码:

class page_resultsShow extends Page {
function initMainPage() {
    $p = $this;
    $gr = $this->add('MVCGrid_Export');
    $gr->setModel('results',array('name','budget','bestapplicants'));

    $gr->addColumnMVC('name');
    $gr->addFormatter('name','link');
    $gr->addQuickSearch(array('name'));
    $gr->addPaginator(20); 
}

//details...
function page_details() {
    ... some code..
}

function defaultTemplate(){
    return array('page/results');
}

}

我想我需要添加一些信息来向网格解释正在处理的模型,但我没有找到如何!

感谢您的帮助

4

1 回答 1

0

我们已经为 4.2 推送了更新的导出模块

请更新 atk4-addons 和 atk4 以确保您在 master 分支上(现在是 4.2)。

语法现在有点不同,因为 Export 现在充当控制器。

class page_index extends Page {
    function init(){
        parent::init();
        $c=$this->add("Grid");
        $c->setModel("A");
        $c->addPaginator(1);
        $c->add("Export");

        $c=$this->add("CRUD");
        $c->setModel("A");
        if ($c->grid){
            $c->grid->addPaginator(1);
        }
        $c->add("Export");
    }
}

从电子邮件到 atk4 组:

// 假设你有网格

$export = $grid->add("Export");

// 这会将导出 xls 和导出 csv 按钮添加到您的网格

//如果你有crud:

$export = $crud->add("Export");

// 这会将导出 xls 和导出 csv 按钮添加到您的网格

现在,您可以轻松地创建新的“解析器”,通过创建

Export_Parser_Xyz班级。

然后只需将其添加到您的导出中:

$export->add("Export_Parser_Xyz");

非常重要的更新是它现在在被分页器、过滤器等更改后使用 dq,以便它可以准确地导出显示的内容。可选,是默认情况下被删除的限制,但可以在解析器级别进行控制。

这将自动将按钮添加到网格/crud 并处理来自相应网格/crud 数据源的数据流。

注意!

导出仅适用于基于 dq 的网格,如果定义了模型,则尝试从模型的字段定义中加载标题。PDF 解析器在这一点上被忽略了,因为它非常具体并且需要特定的第 3 方软件。

如果您想让旧的导出模块按照说明lib/Export.php启用兼容模式。


于 2012-04-23T11:20:36.420 回答