DataBlockView的基本特性和使用方法与BlockView一致,详情请参考:BlockView(DCUG)
与BlockView最大的不同是:BlockView通过items属性定义内部的块,而DataBlockView通过其所设定的DataSet和DataPath属性所计算得到的EntityList作为自身的块。
另外需要注意的是块渲染器的使用,由于在BlockView中块渲染器是针对其items属性存储的数据做定制化处理的,如:
BlockView的onReady事件中初始化items的代码如下:
// @Bind #blockView1.onReady !function(self, arg) { self.set("items",["item1","item2","item3","item4","item5","item6","item7","item8","item9","item10","item11","item12","item13","item14","item15","item16","item17"]); }
我们就可以自定义块渲染器:
var SimpleBlockRenderer1 = $extend(dorado.widget.blockview.DefaultBlockRenderer,{ render: function(dom, arg) { dom.innerText = arg.data; } });
这样浏览器中的页面效果就如下:
但是如果采用DataSet绑定后,自定义块渲染器中的代码就要面向dorado.Entity编程,如Entity对象对应的DataType结构如下:
那么块渲染器的代码就需要调整为:
var SimpleBlockRenderer1 = $extend(dorado.widget.blockview.DefaultBlockRenderer,{ render: function(dom, arg) { dom.innerText = arg.data.get("label");//注意要根据Entity的api获取内部属性 } });
支持图片显示的块渲染器:
var SimpleBlockRenderer2 = $extend(dorado.widget.blockview.DefaultBlockRenderer,{ render: function(dom, arg) { dom.innerHTML = "<img src='"+arg.data.get("icon")+"' />";//注意要根据Entity的api获取内部属性 } });
使用系统内置的ImageBlockRenderer的时候就可以:
blockView.set("renderer", new dorado.widget.blockview.ImageBlockRenderer({ captionProperty:"label", imageProperty: "icon" }));
Attachments:
DataType.PNG (image/png)