刚开始尝试了好几种方法,都不顶用,最后还是想从官网提供的方法入手bootstrap table有一个“refresh”方法,将此方法绑定到搜索按钮实现从server端的搜索。
首先来看看官网的refresh方法提供的参数【刷新远程数据, {silent: true} 刷新客户端数据,{url: newUrl}根据newUrl刷新数据,还支持设置参数哦{query: {foo: 'bar'}}】
这里主要是用到最后一个参数。
其它的多余脚本可以看我的《bootstrap table学习小记》一文,下面主要按钮的前台的脚本
前台脚本:
<span style="font-family:Times New Roman;"><span style="font-size:14px;"><div class="form-group">
<label class="col-md-4 control-label" for="searchtext"><span class="glyphicon glyphicon-search" aria-hidden="true"></span>用户名</label>
<div class="col-md-8">
<input type="text" name="search" class="form-control" id="searchtext" placeholder="请输入用户名"/>
</div>
</div></span></span>
<span style="font-family: 'Times New Roman';"><span style="font-size:14px;">$("#search").bind("click",function(){
searchtext=$("#searchtext").val();
if (searchtext==''){
alert("请输入需要搜索的用户名");
return
}
$(".search input").val(searchtext);
$("#table").bootstrapTable('refresh',{query: {text:searchtext}});
});</span></span>
后台的函数:
<pre name="code" class="python">def userssource1(request):
userlist=[]
searchtext = request.POST.get('text','')
username = request.session.get('uname','null')
limit = request.POST.get('limit','')
offset = request.POST.get('offset','')
offset = int(offset)
limit = int(limit)
unitid=request.POST.get('unit','')
userid= Users.objects.filter(name=username)[0].userid
if not searchtext:#刚开始搜素框里并没有值,所以此时从数据库中取出所有的数据
userlefts = Users.objects.filter(unit=unitid)[offset:offset+limit]
#userlefts = Users.objects.filter(unit=unitid)
length=Users.objects.filter(unit=unitid).count()
if len(searchtext)>0:#当搜素框里有值时,只从数据库中取出要搜素的用户
user1=Users.objects.filter(name__startswith=searchtext,unit=unitid)
userlefts = user1[offset:offset+limit]
length=len(user1)
for usr in userlefts:
user_id=usr.id
if len(UserUnitPrivs.objects.filter(useridx=user_id)):
if len(UserUnitPrivs.objects.filter(useridx=user_id)[0].unitidx)==2:
user_unitidx=UserUnitPrivs.objects.filter(useridx=user_id)[0].unitidx
unitname1=Unit.objects.filter(unitidx2=user_unitidx)[0].name1
unitname2=Unit.objects.filter(unitidx2=user_unitidx)[0].name2
admin=get_user_privs(usr.userid)
c ={'id':usr.id,'name':usr.name,'unit':usr.unit,'usrid':str(usr.userid),'admin':admin,'unitname1':unitname1,'unitname2':unitname2,'realname':usr.real_name,'gender':usr.gender,'phone':usr.tel_num,'email':usr.email,'address':usr.address}
userlist.append(c)
data='{"total":%s,"rows":%s}' % (length,simplejson.dumps(userlist,ensure_ascii=False))
#如果是服务端分页,返回的结果必须包含total、rows两个参数。漏写或错写都会导致表格无法显示数据。
return HttpResponse(data,mimetype='text/javascript;')
下面这幅图是不设置搜索值的结果