我已经获得了一个维护网站。该网站正在使用PRADO框架,我不得不做一些小的改动。 HTML和CSS更改没有问题,但现在我必须将一些数据从页面传递到视图。 我尝试过使用:
$this->HomeCalendar2->DataSource = $result['data'];
$this->HomeCalendar2->dataBind();
但它说Component property 'Home.HomeCalendar2' is not defined.
在我的代码上方有以下代码:
$this->HomeCalendar->DataSource = $result;
$this->HomeCalendar->dataBind();
它工作得很好,我看不出HomeCalendar的定义在哪里。 任何帮助将不胜感激。
P.S:我以前从未与PRADO合作过。答案 0 :(得分:2)
这个问题现在已经很老了,希望你已经解决了。
使用DataSource意味着你的模板(.page或.tpl)中必须有一个TDataBoundControl组件,如下图所示(例如使用TRepeater)
<com:TRepeater ID="HomeCalendar">
<!--- [ properties like ItemTemplate here and it contents ] --->
</com:TRepeater>
TDataBoundControl的子类用于需要循环结果的组件,(以某种方式排序for
或foreach
)。
如果你需要将一个signle结果传递给视图,你可以使用TPanel / TActivePanel,TLiteral等组件,或者只使用expression tag。
示例:
表达式标签:
Php:
<?php
$this->myvalue = 'Hello World!';
模板:
<h1><%= $this->myvalue %></h1>
或其他解决方案:
模板:
<com:TLiteral ID="MyLiteral" />
PHP:
<?php
$this->MyLiteral->getControls()->add('<h1>Hello world !</h1>');