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);
}

}});};
...全文
452 26 打赏 收藏 转发到动态 举报
写回复
用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)

87,921

社区成员

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

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