elf*_*wyn 6 dojo dialog dojox.grid.datagrid
我有以下问题:
以编程方式创建dijit.Dialog和dojox.grid.DataGrid(链接到全局变量数据存储(dojo.store.Memory)),当对话框大小保持最小时,不显示对话框的内容.
DataGrids Store正确填充,Firebug在Dialog中显示Grid.
data = new dojo.data.ObjectStore(
{ objectStore: new dojo.store.Memory({data:[]}) });
data.put({id:0,name:'Franklin'});
showDialog = function(){
var dlg = dijit.byId('myDlg');
if(dlg){
dlg.show();
}
else{
var cp = new dijit.layout.ContentPane({style:"width:500;height:500;"});
var grid = new dojox.grid.DataGrid({
store : data,
structure : [
{field:'id',name:'ID',width:'50px'},
{field:'name',name:'Name',width:'400px'}]
},cp);
dlg = new dijit.Dialog({
id:'myDlg',
title:'Names',
content:cp.domNode
});
grid.startup();
dlg.show();
}
);
Run Code Online (Sandbox Code Playgroud)
也许我添加了错误的顺序?
另外我不知道使用domNode属性组合/附加dojo小部件的方式是否正确.
我不知道我使用的ContentPane是否需要将Grid放在Dialog中.到目前为止,这两种变体都不起作用
最后,我不确定Dialog是否需要静态测量以及正确调整大小.根据我的经验,Dialog本身并不需要静态宽度或高度,但到目前为止我没有经验添加像Grid这样的动态组件 - 可能会在启动时将其大小更改为对话框.
这是我上述问题的一种可能的解决方案。在这种情况下,对话框需要就位并且可见。只有在那之后,网格才会被创建,放置在对话框中并启动。
对话框和网格都需要明确的尺寸。如果对话框有其他内容,它可能不需要额外的宽度信息。
var myDialog = dijit.byId('myDialog');
if(!myDialog){
myDialog = new dijit.Dialog({
id:'myDialog',
title:'test dialog',
style:'width:600px;height:600px;'
});
}
myDialog.show();
var myMemoryStore = new dojo.store.Memory(
{data:[
{'id':'0','lastname':'Frank'},
{'id':'1','lastname':'Herbert'}]});
var myObjectStore = new dojo.data.ObjectStore({objectStore:myMemoryStore });
var myStructure = [
{field:'id', name:'ID', width:'20px'},
{field:'lastname', name:'NAME', width:'200px'}];
var myGrid = dijit.byId('myGrid');
if(!myGrid){
myGrid= new dojox.grid.DataGrid({
id:'myGrid',
store:myObjectStore ,
structure:myStructure,
style:'width:400px;height:400px;'
});
}
dojo.place(myGrid.domNode,myDialog.containerNode,'first');
myGrid.startup();
Run Code Online (Sandbox Code Playgroud)