日期:2014-05-16  浏览次数:20672 次

Ext ComboBox的绘制 通过ajax得到内容
本帖最后由 yanlin0813 于 2013-01-09 15:29:12 编辑
绘制ComboBox 普通的没问题 
通过Ajax获取内容的话 总是绘制不成功 ComboBox不能完整显示(就想普通的text似的。。。),jsp页面无报错

js:

Ext.onReady(function() {
var proxy = new Ext.data.HttpProxy( {
url : "../ComboBoxServlet"
});
var City = Ext.data.Record.create( [ {
name : "did",
type : "int",
mapping : "did"
}, {
name : "dname",
type : "string",
mapping : "dname"
} ]);
var reader = new Ext.data.JsonReader( {
totalProperty : "totalProperty", //总记录数
root : "root" //所有的数据(json对象数组)
}, City);
var store = new Ext.data.Store( {
proxy : proxy,
reader : reader,
autoLoad: true //即时加载数据
});

var combobox = new Ext.form.ComboBox({

store: store,
emptyText: "请选择",
mode: "remote",
pageSize: 5,
triggerAction: "all",
displayField: "dname",
valueField: "did",
renderTo: Ext.getBody(),
readOnly: true,
listWidth: 300
});
});


java:

public class ComboBoxServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 起始索引
int start = Integer.parseInt(request.getParameter("start"));
// 页大小
int limit = Integer.parseInt(request.getParameter("limit"));
System.out.println(start + "," + limit);
// 总记录条数,如果是数据库则要通过count 计算出来
int totalProperty = 17;
String fmt = "{did: %d, dname: '%s'}";
StringBuffer s = new StringBuffer("{totalProperty:");
s.append(totalProperty).append(", root:[");
int end = start + limit;
// 因为不是查找数据库,所以需要多加一个判断
if (end > totalProperty)
end = totalProperty;// 如果是数据库,本行要删除
for (int i = start; i < end; i++) {
s.append(String.format(fmt, i, "部门" + i));
if (i < end - 1) {
s.append(",");// 各json对象用“,”隔开,最后一个不要
}
}
s.append("]}");
out.println(s.toString());
out.flush();
out.close();
}
}


web.xml

 <servlet>
<servlet-name>ComboBoxServlet</servlet-name>
<servlet-class>ComboBoxServlet</servlet-class>
   </servlet>
<servlet-mapping>
<servlet-name>ComboBoxServlet</servlet-name>
<url-pattern>/ComboBoxServlet</url-pattern>
</servlet-mapping>
ajax ext combobox

------解决方案--------------------
ComboBoxServlet这个返回什么?有可能返回内容出错了