在使用jQuery easyui的ComboBox时遇到了一个小问题:我要在ComboBox中添加一个"全部"的选项,可是数据源是公用的,另外一个ComboBox不需要添加,所以只能在数据的接收端aspx页面修改数据.在网上找了半天也没什么好的方法,所以我就自己想了一个,在这里做一个笔记.
方法就是本来直接用ComboBox的url属性请求数据改成用$.post请求,得到数据后直接修改再作为数据源绑定到ComboBox中.
下面是代码:
前台的jQuery代码:
function initcbbList() {
$.post("../ashx/PublicDDLDataashx.ashx?actionType=bl", null, function (data) {
var list = data;
list.unshift(new Object({ CODETYPENUM: 0, CODENAME: '全部' }));
$("#BL").combobox({
data: list,
valueField: "CODETYPENUM",
textField: "CODENAME",
value: 0,
editable: false
});
}, "json");
}
这里表面上用的是post提交方式,但实际上起作用的是get的方式,所以后台用的是Request.QueryString[]接收.
后台:
因为请求的是ashx页面,所以代码和aspx的后台有点不同
public void ProcessRequest(HttpContext context)
{
if (!string.IsNullOrEmpty(context.Request.QueryString["actionType"]))
falgs = context.Request.QueryString["actionType"];
switch (falgs)
{
case "bl":
returnValue = BindblList(context);
break;
default:
break;
}
context.Response.Clear();
context.Response.Write(returnValue);
context.Response.End();
}
其中的BindblList(context)方法是向数据库获取数据并json化的方法,这里就不写出来了.