要求:在同一页面上可以显示多个不同的widget source数据模块,并且以唯一的模块id记录。多个数据模块共同维护一个数据源配置对话框。
这个任务相当关键,其它很多的工作都是在这个基础上完成,所以必须先把它实现的了。
实现:将当前的系统时间取出作为模块的id ,这样就能保证数据模块的唯一性。
function addsource()
{
var time = new Date();
var mytime=time.getYear().toString() + time.getMonth().toString() + time.getDate().toString() + time.getHours().toString() + time.getMinutes().toString() + time.getSeconds().toString() ;
var lzh = document.getElementById("lzh");
lzh.innerHTML += "<div id='" + mytime + "1' ><div id='" + mytime + "' class='module' >配置数据源 </div></div>" ;
}
在页面上定义一个div,每次形成的模块都加入到这里面,将这个div设置成可排序状态。对页面的
onmousedown事件添加一相javascript函数: enableDnd()
function enableDnd(){
var kw = {
tag: "div",
treeTag: "div",
handle: "title",
hoverclass: "hover",
dropOnEmpty: true,
containment: containers,
constraint: false
};
containers.each(function(module){
Sortable.destroy(module);
Sortable.create(module, kw);
});
}
模块的维护:
模块的删除:必须先获得本身的id ,通过它作为参数将它删除。
function deletesource(id)
{
document.getElementById(id + "1").innerHTML ="";
document.getElementById(id + "1").removeNode();
dojo.widget.byId("database_floatpane").hide();
}
利用下面函数学数时行模块数据源对话框的维护,因为每次对数据源时行配置时都要点一个标题栏的编辑图片,通过它每次就能将模块本身的id记录下来,这样才能保证对话框运行的是模块自身的数据;
function selfsetting(moduleid,instancename)
{
var hidden=document.getElementById("globalhidden");
hidden.name=moduleid;
hidden.value=instancename;
}
function re_initialdialog()
{
choosedatabase();
choosesqldatabase();
var tablenameobj=document.getElementById("choose_table_name");
choose_table_name.options.length = 0;
var columnsobj=document.getElementById("choose_columns_name");
choose_columns_name.options.length = 0;
refilter();
document.getElementById("sqlinput").innerHTML="";
}
function refilter()
{
var hidden=document.getElementById("globalhidden");
var moduleid =hidden.name;
var columns = document.getElementById(moduleid + "columns");
var filtercol = document.getElementById("filtercol");
filtercol.options.length = 0;
if(columns)
{
var moduleid=hidden.name;
var arraystr = columns.value.split(",");
for ( i = 0 ; i < arraystr.length-1 ; i ++ )
{
filtercol.add(new Option(arraystr[i],arraystr[i]));
}
}
}