此分页问题原先没考虑完整,导致模块内部之间和模块与模块之间的分页不独立,例如当页面上存在两个数据模块时,点击上一个模块的分页图标,下一个模块会跟随着变化;当同一个模块进行重新配置得到数据时,分页也会与上一次的数据配置有关联。目前已经解决此问题,关键还是各个模块moduleid的传参问题,还有就有设置初始化函数才能使各个模块的分页进行顺利。

最初显示数据时,先点了模块表头,该模块的moduleid就能够通过全局变量得到了,第一次的数据显示时所需要的参数可能过记录下拉列表中的值传递。当点击分页图标时,需要将showpage的值加一,并且作为参数传入显示数据的jsp页面,先说一下showpge值的获取:原先采用的是将showpage作为一个全局变量来传递,显然会出现问题。现在是将showpage的值放在一个hidden中,每次作为参数传过去后,jsp页面上将其记录到hidden的value值中,每次将showpage加一时,先从hidden中获取一下,进行加一操作,然后再将加一后的值赋给hidden的value值。实现代码如下:

function showupbasepage(moduleid){        
    var   strNum=document.getElementById(moduleid + "showpage").value; //从jsp页面中获取showpage的值
     var  num=parseInt(strNum);   //由于获取的是字符串格式,要进行加减一 操作首先要转换成数值格式
    num=num-1;
   var dd=num.toString();//再将数值类型转换成字符串格式,再次赋值给hidden的value属性。
   document.getElementById(moduleid + "showpage").value=dd;
   alert("重新值:"+document.getElementById(moduleid + "showpage").value);
   showbasedata(moduleid);
           }
function showdownbasepage(moduleid){  
        var   strNum=document.getElementById(moduleid + "showpage").value; 
        var  num=parseInt(strNum);  
        num=num+1;
        var dd=num.toString();
        document.getElementById(moduleid + "showpage").value=dd; 
         showbasedata(moduleid);
   }  

将分页的showpage获得后就要重新调用显示数据的函数,此时必须要传带参数的showbasedata();因为多个模块显示时,当进行下一页操作时,必须保证它操作的是本身模块的分页,这样把moduleid作为参数传入就行了。注意:第一次调用函数是不带参数的,而当分页操作时再次调用该函数就得加参数,这样的话,该函数就必须进行一次参数个数的判断。

 function  showbasedata()

       var moduleid ="";
      var databasename ="";
      var databaseinstance ="";
      var tablename = "";
      var columns ="";
      var  showpage= "";  
     var hidden=document.getElementById("globalhidden");
     if(arguments.length  == 0)//参数为0,即将第一次显示数据时传递的参数的获取方法如下
    {
        moduleid=hidden.name;
     databaseinstance=hidden.value;
      var databasenameobj=document.getElementById("choose_database_name");   
    for(var i=0;i<databasenameobj.options.length;i++)
     if(databasenameobj[i].selected){
      databasename=databasenameobj[i].value;
      break;
    }
    var tablenameobj=document.getElementById("choose_table_name");  
    for(var i=0;i<tablenameobj.options.length;i++)
     if(tablenameobj[i].selected){
     tablename=tablenameobj[i].value;
      break;
    }
    var columnsobj=document.getElementById("choose_columns_name");
    for(var i=0;i<columnsobj.options.length;i++)
    {
     if(columnsobj.options[i].selected)
     {
     columns+=columnsobj.options[i].value;
     columns+=",";
     }
    }  
  }
 else
    {
         moduleid= arguments[0];//将分页后调用的时候传递参数moduleid,参数的获取是通过当前页面的的hidden的value属性值获取的
         databaseinstance =  document.getElementById(moduleid+"databaseinstance").value
          databasename =  document.getElementById(moduleid+"databasename").value
       tablename =  document.getElementById(moduleid+"tablename").value
       columns = document.getElementById( moduleid+"columns").value;

    }

  createXMLHttpRequestre_data();
    xmlHttpre_data.onreadystatechange =  new   Function("handleStateChangere_data(" + moduleid +")");      
  }

//下面是showpage的获取方法,当第一次显示数据时,将其值设为1传递给jsp页面。当分页时是通过读取hidden的value值得到的。
  var  showpageobj = document.getElementById(moduleid + "showpage");
     if(showpageobj)
    {
      showpage = document.getElementById(moduleid + "showpage").value;
   }
   else
     {
    showpage=1;
  }
  xmlHttpre_data.open("POST",applicationRoot+"datapage.jsp",true);
 xmlHttpre_data.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 xmlHttpre_data.send("moduleid="+moduleid+"&databaseinstance="+databaseinstance+"&databasename="+databasename+"&tablename="+tablename+"&columns="+columns+"&showpage="+showpage);
}

 function handleStateChangere_data()
 {
  if(xmlHttpre_data.readyState==4)
  {
       if(xmlHttpre_data.status==200)//当从jsp页面传过的的数据显示时,也要通过参数区分下,否则数据模块的显示位置会不准确。
      var moduleid;
    if(arguments.length  == 0)
            {
          var hidden=document.getElementById("globalhidden");
                   moduleid=hidden.name;
             }
           else
            {
       moduleid= arguments[0];  //在相应的自身模块位置显示数据。
             }
              document.getElementById(moduleid).innerHTML= xmlHttpre_data.responseText; 
             var  filtercol = document.getElementById("filtercol");
            var arraystr =  document.getElementById( moduleid + "columns").value.split(",");
             filtercol.options.length   =   0;         
      for ( i = 0 ; i < arraystr.length-1 ; i ++ )
          {
            filtercol.add(new Option(arraystr[i],arraystr[i])); 
        }
   }
   else{alert("dpwrong wrong");} 
  }
 }
上面实现的是通过下拉单选择形式获取的数据模块情况,还有一种获取是用户自己通过输入sql语句来显示数据库中的数据。参数的获取是通过读取控件的value值获得的。

function  inputsql(){
    var moduleid;
    var hidden=document.getElementById("globalhidden");
     if(arguments.length  == 0)
    {    
     moduleid=hidden.name;  
  }
 else
    { 
    moduleid= arguments[0];  
      }
    alert(moduleid);
 createXMLHttpRequest_sql();
 xmlHttp_sql.onreadystatechange=new   Function("handleStateChange_sql(" + moduleid +")");
 var databaseinstance=hidden.value; 
 var databasenameobj=document.getElementById("choose_sqldatabase_name"); 
  var  databaseobj = document.getElementById(moduleid + "databasename");
  var  databasename ;
 if(databaseobj)
    {
    databasename = document.getElementById(moduleid + "databasename").value;
   }
   else
     {
  for(var i=0;i<databasenameobj.options.length;i++)
  if(databasenameobj[i].selected){
   databasename=databasenameobj[i].value;
   break;
  }
  }
 var  sqlobj = document.getElementById(moduleid + "datasql");
  var  sql;
     if(sqlobj)
    {
     sql = document.getElementById(moduleid + "datasql").value;
   }
   else
     {
    sql=document.getElementById("sqlinput").value;
  }
 var  showpageobj = document.getElementById(moduleid + "showpage");
     if(showpageobj)
    {
    var  showpage = document.getElementById(moduleid + "showpage").value;
   }
   else
     {
   var showpage=1;
  }
    xmlHttp_sql.open("POST",applicationRoot+"sqlinput2.jsp",true);
 xmlHttp_sql.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 xmlHttp_sql.send("moduleid="+moduleid+"&databaseinstance="+databaseinstance+"&databasename="+databasename+"&sql="+sql+"&showpage="+showpage);  
}

function handleStateChange_sql(){
 if(xmlHttp_sql.readyState==4){//请求完成
 alert("ok");
     if(xmlHttp_sql.status==200){
    if("SQL语法错误,请检查!" == xmlHttp_sql.responseText.trim() || "SQL执行错误,请检查!" == xmlHttp_sql.responseText.trim())
    {
         alert(xmlHttp_sql.responseText.trim());
    }
   else  
   {       var moduleid;
    if(arguments.length  == 0)
            {
          var hidden=document.getElementById("globalhidden");
                   moduleid=hidden.name; 
          }
           else
            {
       moduleid= arguments[0];
             }
    document.getElementById(moduleid).innerHTML=xmlHttp_sql.responseText; 
    alert(xmlHttp_sql.responseText);
    var  filtercol = document.getElementById("filtercol");
    var colu = document.getElementById( moduleid+"columns").value;
    var arraystr =  document.getElementById( moduleid+"columns").value.split(",") ;
    filtercol.options.length   =   0;
     for ( i = 0 ; i < arraystr.length -1 ; i ++ )
     {
     filtercol.add(new Option(arraystr[i],arraystr[i]));   
     }        
   }         
  }
  else{
   alert("errorerror");   
   }
  }

}