前台:
<table id="dg"></table>
$('#dg').datagrid({
url:'/url/',
columns:[[
{field:'Name',title:'name',width:100},
{field:'User',title:'user',width:100}
]]
})
后台:主要有3個參數,page(頁數)、rows(每頁行數)、total(總行數)
思路:
1、datagrid會自己傳page 跟rows過來,直接在后台獲取
2、得到page跟rows后把它們類型轉為int、從數據庫取出數據把總行數賦給total,然后把數據放到列表里面
3、判斷page是不是第一頁:
3.1、如果是第一頁:判斷有多少行(rows),取rows行數據
3.2、如果不是第一頁:從列表刪除page-1條數據得到剩余的數據,然后再做第3.1步
4、把total跟得到的數據拼起來:ealist = {'rows':alist,'total':total}
5、把ealist轉成json格式數據return回去, ok
def userlist(request):
page = request.GET['page']
rows = request.GET['rows']
User_list = Userdb.objects.all().order_by('-id')
alist=[]
for i in User_list.values():
alist.append(i)
tl = len(alist)
easy_list = []
rs = rows
a = int(page)-1
b = int(rs)
total = json.dumps(tl)
if (a==0):
a = 1
if(b>len(alist)):
ealist = {'rows':alist,'total':total}
else:
for s in range(a*b):
easy_list.append(alist[s])
ealist = {'rows':easy_list,'total':total}
else:
ss = alist[a*b:]
if(len(ss)<b):
ealist = {'rows':ss,'total':total}
else:
for i in range(a*b):
easy_list.append(ss[i])
ealist = {'rows':easy_list,'total':total}
easylist = json.dumps(ealist,cls=CJsonEncoder)
return HttpResponse(easylist)
//如果數據里面有時間的話,使用json.dumps()會出錯。下面這個函數就是處理這個問題
class CJsonEncoder(json.JSONEncoder):
def default(self, obj):
try:
if isinstance(obj, datetime):
return obj.struct_time('%Y-%m-%d %H:%M:%S')
elif isinstance(obj, date):
da = str(obj.strftime('%Y-%m-%d'))
#return obj.strftime('%Y-%m-%d')
return da
else:
return json.JSONEncoder.default(self, obj)
except Exception,e:
print e