Ext中高级搜索之后不能store不能加载最新的数据源

ws_hgo 2010-08-23 11:24:35
 //高级搜索弹出层
var Search_Window = new Ext.Window({
collapsible: true,
maximizable: true,
minWidth: 300,
minHeight: 180,
width:386,
height:250,
modal:true,
title:'高级搜索对话框',
closeAction:"hide",
layout: 'fit',
plain: true,
bodyStyle: 'padding:5px;',
buttonAlign: 'center',
items: Search_Panel,
buttons: [{
text: '提交',
handler:function(){

var IndustryNum=Search_Panel.getForm().findField('IndustryNum').getValue();
var UserName=Ext.getCmp("cbxj").getValue()
var RoleName=Search_Panel.getForm().findField('RoleName').getValue();
// var RoleName="";
var Sex=Search_Panel.getForm().findField('Sex').getValue();
var IP1=Search_Panel.getForm().findField('IP1').getValue();
var IP2=Search_Panel.getForm().findField('IP2').getValue();


jsonData= {operatype:'Express_find',IndustryNum:IndustryNum,UserName:UserName,RoleName:RoleName,Sex:Sex,IP1:IP1,IP2:IP2};
Search_Window.hide();
CodeOperaSearch('../../WebUI/UserManage/UserManage.aspx',jsonData);
store.reload();
grid.store.reload();



}
},{
text: '关闭',
handler:function(){Search_Window.hide();}

}]
});

//高级搜索后台程序
var CodeOperaSearch=function(u,p){
var conn=new Ext.data.Connection();
conn.request({
url:u,
params:p,
method:'post',
scope:this,
callback:function(options,success,response){

if(success){
//

//Ext.MessageBox.alert('Info',response.responseText);
//store:response.responseText;这里的response.responseText是我查询之后我想要的信息,但是页面上面
//不能重新加载我的数据源
store.reload();
grid.store.reload();
}
else{

Ext.MessageBox.alert("提示","所提交的操作失败!");
Ext.MessageBox.alert('Info',response.responseText);
}

}});};
...全文
485 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
ws_hgo 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 ibm_hoojo 的回复:]
引用 24 楼 ws_hgo 的回复:

已经解决啦
当为空的时候
此时后台解析的json与store解析不一样所以报错
只要把后台当数据源为空的时候数据源解析的和前台的store一样即可

……
[/Quote]

你说的那个我还是没有成功!
kakaroot_cl兄弟的方法成功!
hoojo 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 ws_hgo 的回复:]

已经解决啦
当为空的时候
此时后台解析的json与store解析不一样所以报错
只要把后台当数据源为空的时候数据源解析的和前台的store一样即可
[/Quote]
……
ws_hgo 2010-08-24
  • 打赏
  • 举报
回复
已经解决啦
当为空的时候
此时后台解析的json与store解析不一样所以报错
只要把后台当数据源为空的时候数据源解析的和前台的store一样即可
ws_hgo 2010-08-24
  • 打赏
  • 举报
回复
kakaroot_cl
兄弟
我发现了一个问题
当我搜索条件过滤之后没有查到任何信息这种情况下

页面就报错啦!
并且页面的信息(如果后台没有任何信息的话前台应该显示为空!),此时并不为空

错误信息是:
行:8
字符:99973
错误:语法错误

我页面第8行是:
没有任何信息
7行: <link rel="stylesheet" type="text/css" href="../../ext-3.1.0/resources/css/ext-all.css" />

9行: <script type="text/javascript" src="../../ext-3.1.0/adapter/ext/ext-base.js"></script>

11行: <script type="text/javascript" src="../../ext-3.1.0/ext-all.js"></script>
ws_hgo 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ibm_hoojo 的回复:]
CSS code
buttons: [{
text: '提交',
handler:function(){

var IndustryNum=Search_Panel.getForm().findField('IndustryNum').getValue();
……
[/Quote]
还是得不到查询的效果
alert(Search_Panel.getForm().getValues() + "-" + Ext.encode(Search_Panel.getForm().getValues()));
alert出来的是对的
asdujiayong 2010-08-23
  • 打赏
  • 举报
回复
1高级收索返回的数据结构应当和第一次加载时的数据结构相同,这样才能成功loadData();
2建议这样的操作可以直接把参数传给store,直接到后台去查
hoojo 2010-08-23
  • 打赏
  • 举报
回复
buttons: [{
text: '提交',
handler:function(){

var IndustryNum=Search_Panel.getForm().findField('IndustryNum').getValue();
var UserName=Ext.getCmp("cbxj").getValue()
var RoleName=Search_Panel.getForm().findField('RoleName').getValue();
// var RoleName="";
var Sex=Search_Panel.getForm().findField('Sex').getValue();
var IP1=Search_Panel.getForm().findField('IP1').getValue();
var IP2=Search_Panel.getForm().findField('IP2').getValue();
//这里拿到值没有这么麻烦
alert(Search_Panel.getForm().getValues() + "-" + Ext.encode(Search_Panel.getForm().getValues()));
alert(Search_Panel.getForm().getValues(true) + "-" + Ext.encode(Search_Panel.getForm().getValues(true)));//看看true、false的不同效果
jsonData= {operatype:'Express_find',IndustryNum:IndustryNum,UserName:UserName,RoleName:RoleName,Sex:Sex,IP1:IP1,IP2:IP2};
Search_Window.hide();
CodeOperaSearch('../../WebUI/UserManage/UserManage.aspx',jsonData);//这里的ajax方法可以忽略不用,直接用reload方法查询即可
grid.store.baseParams = jsonData;//添加查询参数
store.reload();
grid.store.reload();
//前提grid对象是你查询的grid,store能够正确拿到


}
}
zoujp_xyz 2010-08-23
  • 打赏
  • 举报
回复
grid.getStore().reload();
ws_hgo 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 asdujiayong 的回复:]
引用 2 楼 ws_hgo 的回复:
引用 1 楼 fendy5201 的回复:
是不是有缓存呢。先清空缓存再加载数据试试看。

肯定不是这个问题

我的问题是我的response.responseText已经得到了最新的json格式的数据源
如何重新绑定到store上面然后再gridpanel中显示


JScript code
哦,loadData( Object dat……
[/Quote]

试了的不行
asdujiayong 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ws_hgo 的回复:]
引用 1 楼 fendy5201 的回复:
是不是有缓存呢。先清空缓存再加载数据试试看。

肯定不是这个问题

我的问题是我的response.responseText已经得到了最新的json格式的数据源
如何重新绑定到store上面然后再gridpanel中显示
[/Quote]
哦,loadData( Object data, [Boolean append] ) 用这个load下本地数据源
asdujiayong 2010-08-23
  • 打赏
  • 举报
回复
store.reload();
grid.store.reload();
你这个方法应当发出了5个请求了,会不会把之前的给覆盖了...
ws_hgo 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fendy5201 的回复:]
是不是有缓存呢。先清空缓存再加载数据试试看。
[/Quote]
肯定不是这个问题

我的问题是我的response.responseText已经得到了最新的json格式的数据源
如何重新绑定到store上面然后再gridpanel中显示
mark620 2010-08-23
  • 打赏
  • 举报
回复
是不是有缓存呢。先清空缓存再加载数据试试看。
kakaroot_cl 2010-08-23
  • 打赏
  • 举报
回复
//CodeOperaSearch('../../WebUI/UserManage/UserManage.aspx',jsonData);//这里的ajax方法可以忽略不用,直接用reload方法查询即可 注释了,如果用下面的方法,这个是必须的
grid.store.baseParams = jsonData;//添加查询参数
store.reload();
grid.store.reload();
任选其一
ws_hgo 2010-08-23
  • 打赏
  • 举报
回复
谢谢
测试可以啦
顺便请教个问题
你看 10楼兄弟说的

怎么用 grid.store.baseParams = jsonData;//添加查询参数
实现同样的效果啊
kakaroot_cl 2010-08-23
  • 打赏
  • 举报
回复
加个前提

load,reload你每调用一次就访问一次后台
加个条件:当然store得有访问后台的url
kakaroot_cl 2010-08-23
  • 打赏
  • 举报
回复
如果返回的数据格式正确可以不写Ext.util.JSON.decode(),加上也没问题,无影响
如果格式不正确,就得需要这个了
loadData是加载本地数据,你已经通过请求得到了数据,response.responseText这此时就相当于本地数据

如果response.responseText这个数据alert出来的就是你想要的,直接loadData就行了
grid会自己显示的,不需要在load或者reload


load,reload你每调用一次就访问一次后台



ws_hgo 2010-08-23
  • 打赏
  • 举报
回复
请教下17楼的兄弟
我的这个地方
response.responseText
返回的是JSON
为什么还要在这个地方Ext.util.JSON.decode(response.responseText)下
//还有loadData()是重新加载store的数据源码?
store.loadData(Ext.util.JSON.decode(response.responseText));
kakaroot_cl 2010-08-23
  • 打赏
  • 举报
回复
jsonData= {operatype:'Express_find',IndustryNum:IndustryNum,UserName:UserName,RoleName:RoleName,Sex:Sex,IP1:IP1,IP2:IP2};
Search_Window.hide();
CodeOperaMethod('../../WebUI/UserManage/UserManage.aspx',jsonData);-->访问了一次后台
grid.store.baseParams = jsonData;//添加查询参数
grid.store.reload();--->又访问了一次后台

CodeOperaMethod(...),这个方法又访问了2次后台


改:CodeOperaMethod({
...
callback:function(options,success,response){

if(success){
//

//Ext.MessageBox.alert('Info',response.responseText);
//store:response.responseText;这里的response.responseText是我查询之后我想要的信息,但是页面上面
//不能重新加载我的数据源
store.loadData(Ext.util.JSON.decode(response.responseText));
}


}
方法后面的
store.reload();
grid.store.reload();
全部干掉
ws_hgo 2010-08-23
  • 打赏
  • 举报
回复
下面是我后台的代码

 switch (GetFormValue("operatype"))
{
case "AddUser":
userEnt.UserName = GetFormValue("UserName");
userEnt.IndustryNum = GetFormValue("IndustryNum");
userEnt.UserPwd = Utility.Utility.Md5Encrypt(GetFormValue("UserPwd"));
userEnt.Department = GetFormValue("Department");
userEnt.UserType = GetFormValue("UserType");
userEnt.Tel = GetFormValue("Tel");
userEnt.Sex = GetFormValue("Sex") == "1" ? "男" : "女";
userEnt.IP1 = GetFormValue("IP1");
userEnt.IP2 = GetFormValue("IP2");
userEnt.UserID = Guid.NewGuid().ToString();
try
{
new Business.User.UserInfo().Add(userEnt);
// Bind();
Response.Write("{success:true}");
}
catch { Response.Write("{failure:true}"); }

Response.End();
break;
case "Express_find":
//这个是查询搜索的
//如果请求的是用户名称的话所请求的值就是UserID,否则就是UserName
string Where="UserID="+"'"+GetFormValue("UserName")+"'";
UserName = GetFormValue("UserName").Length == 36 ? UserMethod.GetDataByOption("Users", Where).Rows[0]["UserName"].ToString() : GetFormValue("UserName");
IndustryNum = GetFormValue("IndustryNum");
Sex = GetFormValue("Sex") == "1" ? "男" : "女";
IP1 = GetFormValue("IP1");
IP2 = GetFormValue("IP2");
RoleName = GetFormValue("RoleName");
//这是经过查询过滤之后最后的结果,我刚才调试了的,确实是我要的结果
DataTable DT = UserMethod.GetUserByWhere(UserName, IndustryNum, Sex, IP1, IP2, RoleName);
Response.Write(JSONHelper.DataTable2Json(DT));
Response.Write("{success:true}");
Response.End();

break;
加载更多回复(6)
目录 前 言 第一部分 Ext Core 第1章 Ext Core重要概念 2 1.1 Ext.Element 2 1.1.1 获取HTMLElement节点的Ext.Element实例 2 1.1.2 CSS样式操作 3 1.1.3 DOM查询与遍历 4 1.1.4 DOM操作 6 1.1.5 事件处理 9 1.1.6 尺寸大小 13 1.1.7 定位功能 14 1.1.8 动画功能 16 1.1.9 杂项 19 1.2 Ext Core的Ajax功能 19 1.3 DomQuery详解 20 1.4 模板介绍 23 1.5 实用功能 24 1.6 定时执行代码 25 1.7 本章小结 26 第2章 Ext Core实例系统设计 27 2.1 需求分析 27 2.2 系统设计 28 2.3 功能结构图 29 2.4 开发与运行环境 31 2.5 数据库设计 31 2.6 本章小结 34 第3章 Ext Core实例—.NET语言实现 35 3.1 创建应用并设置开发环境 35 3.2 自定义Membership提供程序 37 3.3 创建母版页 38 3.4 首页设计 42 3.5 产品列表页 47 3.6 产品详细信息页 51 3.7 登录对话框 56 3.8 用户注册对话框 61 3.9 购物车对话框 65 3.10 结算 70 3.11 为产品详细页添加评论 77 3.12 本章小结 84 第4章 Ext Core实例—Java语言实现 85 4.1 技术选型 85 4.2 搭建开发环境 85 4.3 设计页面布局 87 4.4 网上商店首页 90 4.5 产品列表页面 98 4.6 产品详细信息页面 105 4.7 登录对话框 113 4.8 用户注册对话框 118 4.9 购物车对话框 123 4.10 结算页面 126 4.11 为产品添加评论功能 133 4.12 本章小结 139 第二部分 Store和Direct 第5章 在.NET中使用Ext.Direct 142 5.1 路由器包的内容 142 5.2 DIY一个Ext.Direct实例 152 5.3 NewtonSoft.JSON 155 5.3.1 JSON的序列化和反序列化 155 5.3.2 LINQ to JSON 158 5.3.3 JSON文本的输出 162 5.4 本章小结 163 第6章 在Java中使用Ext.Direct 164 6.1 在Java平台上配置Ext.Direct 164 6.1.1 下载directjngine 164 6.1.2 配置主控servlet 165 6.1.3 配置客户端 170 6.1.4 编写JavaScript调用远程方法 172 6.2 为Ext.Direct自定义远程方法 173 6.3 Ext.Direct中的高级应用 178 6.3.1 批量请求和批量响应 178 6.3.2 在tree中使用Ext.Direct 181 6.3.3 为grid设置DirectStore 183 6.3.4 在form中使用Ext.Direct加载数据 185 6.3.5 在form中使用Ext.Direct提交数据 187 6.3.6 使用polling方式进行轮询 189 6.4 本章小结 191 第7章 Store 192 7.1 Store的结构 192 7.2 Ext.data.Field 197 7.3 Ext.data.Record 198 7.4 ArrayReader、JsonReader和XmlReader 199 7.4.1 JsonReader 200 7.4.2 ArrayReader 200 7.4.3 XmlReader 201 7.5 Store加载数据 201 7.6 Store的数据操作 203 7.6.1 添加数据 203 7.6.2 删除数据 203 7.6.3 搜索、定位和统计 203 7.6.4 更新数据 206 7.6.5 排序 207 7.7 DataProxy 208 7.8 DirectStore 209 7.9 DataWriter 212 7.10 Ext.data.Api 212 7.11 本章小结 213 第三部分 Ext-UI 第8章 Ext用户界面控件 216 8.1 布局 216 8.1.1 在FormPanel中使用HBoxLayout进行布局 216 8.1.2 在FormPanel中使用HBoxLayout和VBoxLayout进行布局 219 8.1.3 Panel的body的样式范围 224 8.2 Form表单组件 226 8.2.1 DisplayField控件 226 8.2.2 在FormPanel中使用TabPanel 229 8.2.3 DirectLoad与DirectSubmit 232 8.2.4 使用DirectSubmit上传文件 235 8.3 Grid组件 238 8.3.1 一个结合DataWrite和RowEditor的Grid示例 238 8.3.2 在CRUD操作中restful的设置以及使用Ext.Direct的问题 247 8.4 ListView控件 248 8.5 本章小结 251 第四部分 Ext 扩展和Ext插件 第9章 Ext 扩展 254 9.1 利用Ext.extend实现继承 254 9.2 与Ext扩展相关的预备知识 256 9.2.1 定义命名空间 256 9.2.2 重写构造函数 257 9.2.3 继承组件的一些准备 257 9.2.4 常用的辅助函数 258 9.2.5 使用xtype 258 9.3 实现一个功能完整的增、删、查、改表格控件 259 9.3.1 扩展GridPanel 259 9.3.2 配置列模型 259 9.3.3 配置显示数据 260 9.3.4 点缀EasyGrid 261 9.3.5 实现添加一条记录的功能 262 9.3.6 实现修改一条记录的功能 264 9.3.7 实现删除一条记录的功能 266 9.4 从头实现 Ext扩展 270 9.5 本章小结 274 第10章 Ext插件 275 10.1 插件的用法 275 10.2 标签页右键菜单TabCloseMenu 276 10.3 面板最大化MaximizeTool 278 10.4 分页设置PageSizePlugin 282 10.5 行数据扩展RowExpander 284 10.6 本章小结 290 第五部分 调试 第11章 调试 292 11.1 测试Ext.Element的功能 292 11.1.1 获取Ext.Element实例 292 11.1.2 测试CSS样式操作 294 11.1.3 测试DOM操作 296 11.1.4 测试DOM查询与遍历 300 11.1.5 测试事件处理 302 11.2 结合DataWrite和RowEditor的Grid的调试过程 303 11.3 本章小结 306 第六部分 实例 第12章 单页面应用实例系统分析 308 12.1 系统分析 308 12.2 系统设计 308 12.2.1 单页面应用设计的难点 308 12.2.2 开发与运行环境 309 12.2.3 数据库设计 309 12.3 各个模块的详细功能说明 311 12.3.1 登录页面 311 12.3.2 主页面 311 12.3.3 角色管理 311 12.3.4 用户管理 312 12.3.5 进仓管理 312 12.3.6 出仓管理 313 12.3.7 产品管理 313 12.3.8 库存统计 314 12.3.9 修改密码 314 12.4 本章小结 314 第13章 单页面应用实例—.NET语言实现 315 13.1 创建应用并设置开发环境 315 13.2 自定义Membership提供程序 317 13.3 登录页 319 13.4 主页面 324 13.5 Ext.Direct的API句柄 329 13.6 修改密码对话框 330 13.7 角色管理模块 333 13.8 用户管理 345 13.9 产品管理 356 13.10 进仓管理 367 13.11 出仓管理 388 13.12 库存统计 403 13.13 退出页 407 13.14 权限设置 408 13.15 本章小结 409 第14章 单页面应用实例——Java语言实现 410 14.1 技术选型 410 14.2 搭建开发环境 411 14.3 配置Ext.Direct 413 14.4 用户登录页面 417 14.5 系统主页面与动态菜单 421 14.6 用户管理模块 427 14.7 角色管理模块 439 14.8 产品管理模块 447 14.9 进仓管理模块 450 14.10 出仓管理模块 460 14.11 库存统计模块 474 14.12 用户修改密码窗口 479 14.13 用户注销 482 14.14 本章小结 483

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧