1. 程式人生 > >jqGrid置頂所有選中行

jqGrid置頂所有選中行

jqGrid 是一個用來顯示網格資料的jQuery外掛,通過使用jqGrid可以輕鬆實現前端頁面與後臺資料的ajax非同步通訊。

本篇文章要講的是當利用jqGrid提供的api介面,實現Grid內容多選時,所有所選行置頂的顯示效果,方便檢視所有選中內容。

前提:jqGrid設定為多選,表格行較多表格出現滾動條,尤其當不分頁顯示資料較多,而所選專案比較分散;

需求:使用者想要檢視一共選中哪些行,需要拖動滾動條,從中檢視哪些選中(載入表格後,使用者需將滾動條從最頂部拖動到最下方才能確定後面的內容哪些已經選中,且肉眼觀察可能由於拖動問題觀察出錯);

結果:所選行比較分散時不利於檢視;

解決方式:提供一個選中置頂功能的按鈕,點選按鈕,表格所有選中項集中排序到表格置頂位置,且表格自動滾動到置頂檢視,所有選中行集中分佈,方便觀察。

原理:利用jqGrid提供的列排序setGrid功能和setGridParam設定配置項功能,實現選中行指定功能。

以下是功能對應的js程式碼:

<script>
(function($){
    var $setGrid = $('#setMonitorGrid'); // 表格元素
    var rowName = []; // 記錄所有選中行的名稱,用於排序時比較行是否選中
    $setGrid.jqGrid({
        url :'/獲取資料的url',
        datatype: "json",
        colNames: [ 'uuid', '名稱', '型別' ],
        colModel: [ {
            name: 'uuid',
            index: 'uuid',
            hidden: true,
            formatter: function (value, options, object) { // 將資料的name值賦給uuid,用於實現重新整理頁面預設選擇行功能
                return object.name;
            },
            sorttype: function(value,row){ // 排序時觸發,根據此函式返回值進行排序,若此行選中則返回0否則返回1.
                if(rowName.indexOf(row.name) > -1){
                    return 0;
                }else{
                    return 1;
                }
            }
        }, {
            name: 'name',
            index: 'name'
        }, {
            name: 'type',
            index: 'type'
        } ],
        altRows: true,
        scrollrows: true,
        rowNum: 999999,  // 此表格無頁尾不分頁,設定當前頁最多顯示為行為999999,預設為10
        scrollrows: true, // 設定此屬性,表格滾動條自動滾動到選中行處進行顯示
        autowidth: true,
        loadonce: true, // 此置頂功能為前端實現功能,不設定此項會導致點選置頂按鈕表格重新向後臺請求資料,無法實現置頂功能。
        viewrecords: true,
        multiselect: true, // 多選屬性,設定此屬性表格可多選
        onSelectRow: function (rowid) {
            var rowId = $(this).jqGrid('getGridParam','selarrrow'); // 選中行ID
            rowName = []; // 所有選中行的名稱
            for(var i = 0; i < rowId.length; i++){ // 將選中行的name值新增到rowName中
                rowName.push($(this).jqGrid('getCell',rowId[i],'name'))
            }
        },
        onSelectAll: function(rowId,status){
            rowName = []; // 所有選中行的名稱
            if(status){
                for(var i = 0; i < rowId.length; i++){ // 將選中行的name值新增到rowName中
                    rowName.push($(this).jqGrid('getCell',rowId[i],'name'))
                }
            }
        },
        caption: ""
    })
    $('#monitorSelTop').bind('click',function(){ // monitorSelTop為按鈕的ID,繫結click函式,點選觸發
        $setGrid.sortGrid('uuid'); // 讓表格按照uuid列進行排序(此uuid對應表格列頭中設定的uuid列)
        $setGrid.jqGrid('setGridParam',{
            sortorder: 'asc'
        }).trigger('reloadGrid'); // 設定表格排序為升序,不設定此項點選按鈕選中行也會統一分佈,但會在統一分佈在表格頂部或者底部,來回切換
    })
})(jQuery)
</script>

實現效果大概如圖所示(PS:表格css樣式是個人修改了的,和功能無關,忽略就好):

點選“選中項置頂”按鈕,所有選中項置頂顯示



相關推薦

jqGrid所有中行

jqGrid 是一個用來顯示網格資料的jQuery外掛,通過使用jqGrid可以輕鬆實現前端頁面與後臺資料的ajax非同步通訊。 本篇文章要講的是當利用jqGrid提供的api介面,實現Grid內容多選時,所有所選行置頂的顯示效果,方便檢視所有選中內容。 前提:jqGr

DataGridView獲得所有中行的某列的值

  foreach (DataGridViewRow dgvRow in dg_users.SelectedRows) { int id = (int)dgvRow.Cells["Id"].Value

JQgrid獲取中行的某個字段值

獲得 數據 字段 ont rowkey data class get dpa var rowKey = $("#jqGrid").jqGrid(‘getGridParam‘, "selrow"); var rowData = $("#jqGrid").jq

jqgrid 中行觸發編輯,切換下一行時驗證和異步保存上一行數據

page mes dex 不想 ima mage index 行數據 sub 有時,我們需要批量修改或填寫一些相似的數據。可以以jqgrid表來顯示,可能的效果如下: 選中觸發行編輯參考:jqgrid 單擊行啟用行編輯,切換行保存原編輯行 本文主要說說驗證和異步保存

C#winform的datagridview設中行

ntc bind view設置 cell sdn 隱藏 orm dex owin this.dataGridView1.CurrentCell = this.dataGridView1[colIndex, rowIndex];this.dataGridView1.Bindi

jqgrid如何使用delRowData函式批量刪除 selarrrow獲取的多個中行資料及注意事項

由於jqgrid沒有提供批量刪除行的函式,因此要實現批量刪除選中行資料,就只能: 先獲取選中行rowIds 遍歷選中行rowIds,逐個呼叫delRowData(string rowid)刪除行資料。 看上去挺簡單,但是這裡有個很大的坑,那就是jqgrid獲取選中

進入目錄檢視點文章檢視部落格目錄(全站式導航)

曾經的我,懵懂無知 入大學之前,由於沉迷遊戲,而選擇計算機專業,意在自己也想做出一個吊炸天的網遊,我相信大部分師弟和師妹都是這麼過來的。來到大學,對IT一無所知,只是抱著自己能做出遊戲的心態開始了大學的上課之旅。每天準時上課準時下課,每天按時完成作業,心情甚是

通過滾動條向下滾動時,DIV廣告自動跟著向下滾動,並且點

<html> <head>     <title></title>     <script src="../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>  

jqgrid 遮蔽非指定列單擊中行事件

beforeSelectRow: function (rowid, e) {           var $myGrid = $(this);         var i = $.jgrid.getCellIndex($(e.target).closest('td')[0

遮蔽右鍵,點滑鼠觸發事件,

<span style="font-family:KaiTi_GB2312;font-size:18px;">// 遮蔽瀏覽器自帶的右鍵 document.oncontextmenu = function(){ return false; } /

PyQt5 將視窗暫時置於所有視窗最前方(喚醒視窗、視窗

void QWidget::raise() Raises this widget to the top of the parent widget's stack. After this call the widget will be visually in front o

jqGrid獲取中行的部分資料

//tab_post:表格名稱 //nos:要獲取的欄位 //ids:獲得所有選中的id var ids = $('#tab_post').jqGrid('getGridParam', 'selarrrow'); var nos="";

ScrollView滾動後顯示按鈕並點的解決方案

隨著APP資料量的增大,電商APP的興起,大家會經常使用到ScrollView,但是有時候我們滑下資料的時候會出現一個問題,那就當我們資料量太多時,我們無法快速的定位回ScrollView的頂部,以至於操作相同的資料導致我們興致缺缺,所以誕生了一系列的輔助操作,今天我就帶大

[] jQuery傳送ajax請求,一次點重複提交

問題描述: 前臺頁面 <input type="button" class="inputbutton" id="btnlogin" value="登入" /> show.js: $("#btnlogin").click(function(){ $.aj

jqgrid獲取中行的數據

http 來源 highlight arr tab tps 獲取 轉載 div 獲取選中行的數據: var rowid=$("#grid-table").jqGrid("getGridParam","selrow"); var rowData=jQuer

百度編輯器在服務器路徑 解決上傳圖片創建目錄失敗的方法(Thinkphp)

插入 borde images tor true ges border name 線上 1、設置文件夾權限2、修改/* 前後端通信相關的配置,註釋只允許使用多行方式 */{ /* 上傳圖片配置項 */ "imageActionName": "uploadimag

左滑菜單(刪除、

gin 所有 nbsp func stl lis mod cli img <div class="xinzhibox"> <div class="list"> <div class="xinzhilis

WinForm始終並獲取焦點

cnblogs sta dea mos pan 方法 bsp eve activate 使一個Winform始終置頂很簡單,只要將這個Form的TopMost屬性設置為True即可,但是強制讓其獲取焦點就比較麻煩了。 最開始的想法在Deactivate事件(Form處於非

Android Studio第三十九期 - popWindows

android windows systems power always /** * Window type: system window, such as low power alert. These windows * are always on top of application

eazyUI 修改datagrid中行默認背景色

cte clas 背景 div pre color 默認 sel datagrid <style> .datagrid-row-selected { background: #D1EEEE; co