dhtmlxconnector中文的配置

来源:互联网 发布:2k14mc 模式数据 bug 编辑:程序博客网 时间:2024/06/05 06:44

最近的项目需要用到dhtmlxconnector这个组件,但网络上的文章的确少的可怜,他的connector很好用,可以实现客户端的ajax,并能同gird,tree,comb等组件连用,遗憾的事例子中没有中文操作,在这里我介绍一种可以操作中文的方法:

我使用的是java版的,在网站上可以下载到相关的例子,在下载到得dhtmlxconnectorjava文件下可以看到samples文件夹里面有一个war包,这个就是源代码了,哈哈。

我以grid下的第一个例子为例说明中文的配置过程。

这个数据库默认是使用mysql的,在mysql下建立数据库,然后将dump.sql导入,便可以实现数据源了,如果是自己的服务器最好把数据源配置为gb2312或者gbk了,但如果是网络租借的服务器就只能把数据库配成lant1了,但可以把表设置为gb2312模式,字段就可以存中文了。

数据库配置好之后我们就来看看编码的引入吧,首先我们介绍一下思路,页面中输入的数据请求后编码是iso8859-1模式,而我们可以将数据统一按utf-8模式操作。这个过程需要两步的转码:

第一步就是:页面上送出的数据,发送到处理页之后的转码 iso-8859-1->utf-8

第二步就是:处理后的数据写入数据库需要的转码  以utf-8模式连接数据库

 

好了说了这么多,开始操作吧:

我们来了解grid文件夹下的01_basic.html文件,这个文件提供了视图界面,他引入了grid组件,愿意的话可以加上

 <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">   这个头。

这个文件中有两句很重要

mygrid.loadXML("01_basic_connector.do");
 var dp = new dataProcessor("01_basic_connector.do");
 dp.init(mygrid);

可以看到01_basic_connector.do是数据的提供者也是数据的操作者,那我们就来看看这个文件吧。查看web.xml文件,发现这个文件实际是Grid_01_BasicConnector.java,就在src下面。

通过追踪文件我们可以看到,数据在请求时封装到DataAction中,而这个过程是自动完成的,所以我们需要在数据发送时截获这个数据并将数据转码,通过查找api我们可以找到beforeUpdate方法,这个方法提供了在更新之前所做的操作,因此我定义了一个类

 

import java.io.UnsupportedEncodingException;

import com.dhtmlx.connector.ConnectorBehavior;
import com.dhtmlx.connector.DataAction;
import com.dhtmlx.connector.GridConnector;

public class Grid_01_updateBehavior extends ConnectorBehavior {

 public void beforeUpdate(DataAction data) {
  try {
   String s=data.get_value("item_cd");
   String strn=new String(s.getBytes("ISO-8859-1"), "UTF-8");
   System.out.print(strn);
   data.set_value("item_cd", strn);
  } catch (UnsupportedEncodingException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
  //data.set_value("item_cd", "测试");
    }
}

 

这段程序内容很简单,就是获得item_cd字段的值,并转化为utf-8模式。

我们还需要在Grid_01_BasicConnector.java这个文件中加一句c.event.attach(new Grid_01_updateBehavior());

Grid_01_BasicConnector.java文件内容变为

import java.sql.Connection;
import java.util.HashMap;

import com.dhtmlx.connector.ConnectorServlet;
import com.dhtmlx.connector.GridConnector;


// TODO: Auto-generated Javadoc
/**
 * The Class BasicConnector.
 */
public class Grid_01_BasicConnector extends ConnectorServlet {
   
 /* (non-Javadoc)
  * @see com.dhtmlx.connector.ConnectorServlet#configure()
  */
 @Override
 protected void configure() {
  
  Connection conn= ( new DataBaseConnection()).getConnection();
  
  GridConnector c = new GridConnector(conn);
  c.dynamic_loading(100);
  c.event.attach(new Grid_01_updateBehavior());        
  c.render_table("grid50000", "item_id", "item_nm,item_cd");

 }
}

到这里,我们的第一步就做好了,第二步还是比较简单的,我们只需找到数据的链接代码,并加入链接方式就可以了。

DataBaseConnection.java为我们提供了数据的链接,所以我们改变里面代码为

import java.sql.Connection;
import java.sql.DriverManager;

public class DataBaseConnection {
 Connection getConnection(){
  Connection conn=null;
  try {
   Class.forName ("com.mysql.jdbc.Driver").newInstance ();
   conn = DriverManager.getConnection("jdbc:mysql://localhost/dhtmlx_DB?characterEncoding=UTF-8", "root", "");
  } catch (Throwable e) {
   e.printStackTrace();
  }
  return conn;
 }
}

当然我的前提是数据库名称为dhtmlx_db,用户名为root,密码没有设置。

到这里我们就大功告成了,重新加载页面,可以看到当在01_basic.html中输入中文的时候依然可以直接存入数据库。

 

 

 

原创粉丝点击