Ext4.1 后台数据有返回,但是Grid不能显示数据。求大神赐教
Ext4.1 后台数据有返回,但是Grid不能显示数据。求大神指教!
这是前台Ext代码
text: "<span style='font-size:12px'>查询用户信息</span>",
handler: function () {
var pnCenter = Ext.getCmp("pnCenter");
if (pnCenter.getComponent("selectUsersPanel") == null) {
//创建用户信息数据集
var selectUsersStore = Ext.create('Ext.data.Store',{
storeId: "selectUsersStore",
autoLoad: true,
fields: ["userName", "userPwd", "userMobilePhone", "userAddr", "userParentID", "userAuthor", "userIntroduce", "userType"],
proxy: {
type: "ajax",
url: "./GetData.aspx?getDataMethod=getUsers&userId=" + getCookies("user_Id") + "&userName=" + getCookies("user_Name") + "&loginType=" + getCookies("login_Type"),
reader: {
type: "json"
}
}
})
//创建用户信息面板
var selectUsersPanel = new Ext.grid.Panel({
id: "selectUsersPanel",
title: "<span style='font-size:13px'>用户信息</span>",
closable: true,
autoScroll: true,
store: Ext.data.StoreManager.lookup("selectUsersStore"),
columns: [
{ header: "用户名", dataIndex: "userName", width: "10%",align:"center" },
{ header: "密码", dataIndex: "userPwd", width: "10%", align: "center" },
{ header: "手机", dataIndex: "userMobilePhone", width: "10%", align: "center" },
{ header: "地址", dataIndex: "userAddr", width: "10%", align: "center" },
{ header: "上级用户", dataIndex: "userParentID", width: "10%", align: "center" },
{ header: "权限", dataIndex: "userAuthor", width: "30%", align: "center" },
{ header: "用户说明", dataIndex: "userIntroduce", width: "10%", align: "center" },
{ header: "用户类型", dataIndex: "userType", width: "10%", align: "center" }
]
})
pnCenter.add(selectUsersPanel).show();
} else {
pnCenter.getComponent("selectUsersPanel").show();
}
}
//这是后台返回的代码
protected void Page_Load(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(Request.QueryString["getDataMethod"])) {
string getDataMethod = Request.QueryString["getDataMethod"];
Response.Write(usersCRUD(getDataMethod));
}
}
#region 修改、删除、添加、查询用户信息
public string usersCRUD(string getDataMethod) {
StringBuilder sb = new StringBuilder("[");
switch(getDataMethod){
//查询用户信息
case "getUsers":
//if (!String.IsNullOrEmpty(Request.QueryString["userId"]) && !String.IsNullOrEmpty(Request.QueryString["userName"]) && !String.IsNullOrEmpty(Request.QueryString["loginType"]))
//{
int user_Id = int.Parse(Request.QueryString["user_Id"]);
string user_Name = Request.QueryString["user_Name"];
int login_Type = int.Parse(Request.QueryString["login_Type"]);
int[] intUser = new int[1];
intUser[0] = user_Id;
string userJson = gsa.QueryUser(login_Type, user_Name, intUser, true);
JavaScriptSerializer js = new JavaScriptSerializer();
InfoModel im = js.Deserialize<InfoModel>(userJson);
if (im.errCode == 0 && im.info.Count > 0) {
foreach (var item in im.info)
{
sb.Append("{userName:'" + item.userName + "',");
sb.Append("userPwd:'" + item.userPwd + "',");
sb.Append("userMobilePhone:'" + item.userMobilePhone + "',");
sb.Append("userAddr:'" + item.userAddr + "',");
sb.Append("userParentID:'" + item.userParentID.ToString() + "',");
sb.Append("userAuthor:'" + item.userAuthor.ToString() + "',");
sb.Append("userIntroduce:'" + item.userIntroduce + "',");
sb.Append("userType:'" + item.userType.ToString() + "'},");
}
sb.Append("]");
}
//}
break;
};
return removeStr(sb.ToString());
}
#endregion
#region 删除最后一个逗号
public string removeStr(string str) {
int index = str.LastIndexOf(",");
if (index != -1) {
return (replaceJson(str.Remove(index, 1)));
}
return "0";
}
#endregion
#region 移除特殊字符
private string replaceJson(string subStr)
{
string[] words = { "\n", "\t", "\r", "\f", "\\" };
for (int i = 0; i < words.Length; i++)
{
subStr = subStr.Replace(words[i], "");
}
return subStr;
}
#endregion
前台的GridPanel是放在一个按钮事件里面的。

在地址栏直接输入ajax请求的地址 页面正常打开,并且能正常显示JSon。
但在grid控件里面就是不能显示。
------解决思路----------------------
store -> proxy- > reader -> root
------解决思路----------------------
json里面要配置root,你返回的json数据里面要有相应的root,比如你的reader里面有root:'data',那你的返回json字符串中应该是{data:[{},{}]}之类的
这是前台Ext代码
text: "<span style='font-size:12px'>查询用户信息</span>",
handler: function () {
var pnCenter = Ext.getCmp("pnCenter");
if (pnCenter.getComponent("selectUsersPanel") == null) {
//创建用户信息数据集
var selectUsersStore = Ext.create('Ext.data.Store',{
storeId: "selectUsersStore",
autoLoad: true,
fields: ["userName", "userPwd", "userMobilePhone", "userAddr", "userParentID", "userAuthor", "userIntroduce", "userType"],
proxy: {
type: "ajax",
url: "./GetData.aspx?getDataMethod=getUsers&userId=" + getCookies("user_Id") + "&userName=" + getCookies("user_Name") + "&loginType=" + getCookies("login_Type"),
reader: {
type: "json"
}
}
})
//创建用户信息面板
var selectUsersPanel = new Ext.grid.Panel({
id: "selectUsersPanel",
title: "<span style='font-size:13px'>用户信息</span>",
closable: true,
autoScroll: true,
store: Ext.data.StoreManager.lookup("selectUsersStore"),
columns: [
{ header: "用户名", dataIndex: "userName", width: "10%",align:"center" },
{ header: "密码", dataIndex: "userPwd", width: "10%", align: "center" },
{ header: "手机", dataIndex: "userMobilePhone", width: "10%", align: "center" },
{ header: "地址", dataIndex: "userAddr", width: "10%", align: "center" },
{ header: "上级用户", dataIndex: "userParentID", width: "10%", align: "center" },
{ header: "权限", dataIndex: "userAuthor", width: "30%", align: "center" },
{ header: "用户说明", dataIndex: "userIntroduce", width: "10%", align: "center" },
{ header: "用户类型", dataIndex: "userType", width: "10%", align: "center" }
]
})
pnCenter.add(selectUsersPanel).show();
} else {
pnCenter.getComponent("selectUsersPanel").show();
}
}
//这是后台返回的代码
protected void Page_Load(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(Request.QueryString["getDataMethod"])) {
string getDataMethod = Request.QueryString["getDataMethod"];
Response.Write(usersCRUD(getDataMethod));
}
}
#region 修改、删除、添加、查询用户信息
public string usersCRUD(string getDataMethod) {
StringBuilder sb = new StringBuilder("[");
switch(getDataMethod){
//查询用户信息
case "getUsers":
//if (!String.IsNullOrEmpty(Request.QueryString["userId"]) && !String.IsNullOrEmpty(Request.QueryString["userName"]) && !String.IsNullOrEmpty(Request.QueryString["loginType"]))
//{
int user_Id = int.Parse(Request.QueryString["user_Id"]);
string user_Name = Request.QueryString["user_Name"];
int login_Type = int.Parse(Request.QueryString["login_Type"]);
int[] intUser = new int[1];
intUser[0] = user_Id;
string userJson = gsa.QueryUser(login_Type, user_Name, intUser, true);
JavaScriptSerializer js = new JavaScriptSerializer();
InfoModel im = js.Deserialize<InfoModel>(userJson);
if (im.errCode == 0 && im.info.Count > 0) {
foreach (var item in im.info)
{
sb.Append("{userName:'" + item.userName + "',");
sb.Append("userPwd:'" + item.userPwd + "',");
sb.Append("userMobilePhone:'" + item.userMobilePhone + "',");
sb.Append("userAddr:'" + item.userAddr + "',");
sb.Append("userParentID:'" + item.userParentID.ToString() + "',");
sb.Append("userAuthor:'" + item.userAuthor.ToString() + "',");
sb.Append("userIntroduce:'" + item.userIntroduce + "',");
sb.Append("userType:'" + item.userType.ToString() + "'},");
}
sb.Append("]");
}
//}
break;
};
return removeStr(sb.ToString());
}
#endregion
#region 删除最后一个逗号
public string removeStr(string str) {
int index = str.LastIndexOf(",");
if (index != -1) {
return (replaceJson(str.Remove(index, 1)));
}
return "0";
}
#endregion
#region 移除特殊字符
private string replaceJson(string subStr)
{
string[] words = { "\n", "\t", "\r", "\f", "\\" };
for (int i = 0; i < words.Length; i++)
{
subStr = subStr.Replace(words[i], "");
}
return subStr;
}
#endregion
前台的GridPanel是放在一个按钮事件里面的。
在地址栏直接输入ajax请求的地址 页面正常打开,并且能正常显示JSon。
但在grid控件里面就是不能显示。
------解决思路----------------------
store -> proxy- > reader -> root
------解决思路----------------------
json里面要配置root,你返回的json数据里面要有相应的root,比如你的reader里面有root:'data',那你的返回json字符串中应该是{data:[{},{}]}之类的