我编写了这个返回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;
}
}
答案 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