EasyUI Forum
September 15, 2025, 11:46:13 PM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: [SOLVED] How to stop disableFilter for requesting server's data  (Read 10676 times)
angween
Newbie
*
Posts: 6


View Profile
« on: July 10, 2015, 03:54:35 PM »

Hello,

I have a datagrid using queryParams with dynamic variable, like: queryParams:{student:name,id:number}, and i also enable filter on it. I got several problem that i manage to 'trick' but then i've got deadend, this is what i've done and i cant:

1. at first i only 'enableFilter' once, then request data with queryParams with changed variable 'name' and 'number', but always ended with 'uncaught range error maximum call stack size exceeded' on chrome's console. then i just disableFilter before i queryParams and then enable it again after that. Works find and i like it. But this not an elegance way, maybe there is another way for this?

2. then this problem came, every time disableFilter triggered, datagrid will request data from servers, and that makes 2 query with queryParams. How can i prevent this?

Thank you
« Last Edit: July 11, 2015, 12:37:32 AM by angween » Logged
stworthy
Administrator
Hero Member
*****
Posts: 3581


View Profile Email
« Reply #1 on: July 10, 2015, 04:54:08 PM »

The 'datagrid-filter.js' supports remote filtering, just set the 'remoteFilter' property to true. If you got some errors while retrieving data, please provide some code snippets to describe how you call 'enableFilter' and how you post requests to server.
Logged
angween
Newbie
*
Posts: 6


View Profile
« Reply #2 on: July 10, 2015, 10:07:35 PM »

i tried to jsfiddle, but i dont know....

this is my code, --i made it simple---

Code:
<body>
<h3>Students</h3>
<div id='students'></div>
<h4>Subject</h4>
<div id='subject'></div>

<script>
$(function(){
var classroom={};
classroom.rows = [
{id:"C1",name:"Daisy"},
{id:"C2",name:"Tulip"},
{id:"C3",name:"Rose"},
{id:"C4",name:"Aster"},
{id:"C5",name:"Lily"},
];
classroom.total = classroom.rows.length;
    
var students=$('#students').datagrid({
singleSelect:true,
data:classroom, //actually i use url: at my localhost web
pageSize:10,
rownumbers:true,
pagination:true,
remoteSort:true,
remoteFilter:true,
filterDelay:1000,
         idField:'id',
columns:[[
{field:'cek',checkbox:true},
{field:'id',title:'#'},
{field:'name',title:'Classroom'}
]]
})
    
var subject=$('#subject').datagrid({
singleSelect:true,
pageSize:10,
pagination:true,
rownumbers:true,
idField:'cr_id',
remoteFilter:true,
remoteSort:true,
columns:[[
{field:'name',title:'Student Name'},
{field:'point',title:'Points'}
]]
})

subject.datagrid({queryParams:{cr_id:'C1',type:'students'}})
subject.datagrid('enableFilter')

function seeDetail(id){
/*
for avoiding 'uncaught range error maximum call
stack size exceeded' i use disableFilter first, query
the data and then enable it again.
but the disableFilter keep trigger query
to server with old queryparams
*/

subject.datagrid('disableFilter');
subject.datagrid({queryParams:{cr_id:id,tipe:'students'}});
subject.datagrid('enableFilter');
}

students.datagrid({
onSelect:function(i,r){
id=r.id;
seeDetail(id);
}
})

})
</script>
</body>

thank you

Edit: cleaning code
« Last Edit: July 11, 2015, 12:20:57 AM by angween » Logged
stworthy
Administrator
Hero Member
*****
Posts: 3581


View Profile Email
« Reply #3 on: July 10, 2015, 11:59:19 PM »

Your 'seeDetail' function just does the reloading action, it can be rewritten as:
Code:
function seeDetail(id){
detail.datagrid('load', {
cr_id:id,
type:'students'
})
}
Logged
angween
Newbie
*
Posts: 6


View Profile
« Reply #4 on: July 11, 2015, 12:35:47 AM »

Aww, its simple then i thought, and i kept focusing on queryParams.  Cheesy
ok, thank you very much for everythink
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!