1. 程式人生 > >bootstrap table實現從後臺搜尋

bootstrap table實現從後臺搜尋

剛開始嘗試了好幾種方法,都不頂用,最後還是想從官網提供的方法入手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;')

下面這幅圖是不設定搜尋值的結果

下面這幅圖是搜尋框中傳了“哈哈”搜尋值的結果圖