使用Dojo Data网格在JSP页面上显示数据

时间:2012-03-04 12:21:45

标签: java json jsp datagrid dojo

我编写了这个返回Json字符串的代码。它包含一组值(名称)。现在我想使用Dojo数据网格在jsp页面上显示这些值。我不知道如何使用这个返回的Json字符串作为Dojo网格的数据。以及如何格式化表格结构。我也想要当我点击表格中的特定行(在这种情况下只包含一个列 - 根据我的查询的员工名称)时,会打开一个新窗口(可能是一个新的JSP页面)。怎么做?请帮我解释一下代码。感谢。

PopulateTextbox.java

package MyPackage;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

public class PopulateTextbox {

    Gson gson = new Gson();
    String temp;
    List <String>rowValues = new ArrayList<String>();
    String[] contactListNames;
    Connection con=null;
    Statement st=null;
    ResultSet rs=null;


    public String method(){


        try{


        String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
        Class.forName(driver);

        String db = "jdbc:odbc:Practice_Database";
        con = DriverManager.getConnection(db,"","");

        st = con.createStatement();
        String sql = "SELECT Emp_Name FROM EmployeeSearch";
        rs = st.executeQuery(sql);

        while(rs.next()){

            rowValues.add(rs.getString("Emp_Name"));
        }
        contactListNames = (String[]) rowValues.toArray(new String[rowValues.size()]);
        temp = gson.toJson(contactListNames);

    }catch(Exception e){System.out.println(e);}
    /*finally{
        try {
                if(con!=null)con.close();
            } catch (SQLException e) {

                e.printStackTrace();
            }
        try {
            if(rs!=null)rs.close();
        } catch (SQLException e) {

            e.printStackTrace();
        }try {
            if(st!=null)st.close();

        } catch (SQLException e) {

            e.printStackTrace();
        }


    }*/
        return temp;

    }
}

1 个答案:

答案 0 :(得分:0)

dojox.grid.DataGrid使用数据存储作为其源。 dojo.data.ItemFileReadStore可以获取作为数据的json对象。

var grid = ...
var store = new dojo.data.ItemFileReadStore({
    data: YOUR_JSON_HERE
});
grid.setStore(store);

商店用于初始化自身的json如下所示

{
    identifier: 'id',
    items: [
        { id: 0, name: 'x' },
        { id: 1, name: 'y' }
    ]
}

因此,您需要修改Java代码以生成特定的json格式。另请注意,每个商品的ID都必须在商店中的所有商品中都是唯一的。

http://dojotoolkit.org/reference-guide/dojo/data/ItemFileReadStore.html

DataGrid具有onRowClick和onRowDblClick事件,您可以将这些事件用于在用户选择时执行所需操作。

http://dojotoolkit.org/reference-guide/dojox/grid/DataGrid.html#dojox-grid-datagrid