要求:在同一页面上可以显示多个不同的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]));    
     }
  }

         
  
}