1. 程式人生 > >extjs4當中的gridpanel,翻頁後保持複選框內容。

extjs4當中的gridpanel,翻頁後保持複選框內容。

這還真意外的花了一些時間,趕緊寫下來有助於記憶……

說真的對extjs控制元件命令瞭解的太少了,還得多下點功夫才行……

Ext.extend(DsTruck.FinanceOut, Ext.Panel, {
    PageSize: 6,//用於控制每頁的行數
    ChangePage: false,//用於判斷此次deselect是點選觸發的還是由翻頁觸發的
    //array: new Array(),


    initUIComponents: function () {
        this.FOBodyDel = [];
        this.array = [];

        //定義資料集
        this.storeList = Ext.create('Ext.data.Store', {
            model: 'Mainmb',
            remoteSort: false,
            pageSize: this.PageSize,
            proxy: {
                type: 'ajax',
                url: '/Import/FinanceOut/GetMainList',
                reader: {
                    idProperty: 'ContractNo' + 'HTH',
                    root: 'data',
                    totalProperty: 'totalCount'
                }
            }
這個js程式碼段基於一個基礎js檔案DsTruck。首先定義一個數據集

然後需要給它加上listener
        var _this = this;//個人感覺這個意思是將作用域定義向下傳遞了一層。不這樣寫的話,listener內就無法引用this.array。
//其實我這個理解可能不準確,希望有高手能解答我這個疑問……         
        this.storeList.addListener('load', function (store, rds, opts) {
            var grid = Ext.getCmp('gridList');
            var sm = _this.MainGridCheckBoxModel;
            var total = store.getCount(); //資料行數  
            //var Tarray = Ext.getCmp('array');
            //alert(_this.array.length);
            for (var i = 0; i < total; i++) {
                var row = store.getAt(i);
                var contractno = row.get('ContractNo');
                if (Ext.Array.indexOf(_this.array, contractno, 0) > -1) {
                    grid.selModel.select(i, true,false);
                    
                }
            }
            grid.getSelectionModel().addListener('deselect', sm, this); //新增checkboxModel的deselect事件,第三個引數this 可不寫,下同
            _this.ChangePage = false;
        });


        this.storeList.addListener('beforeload', function () {
            var grid = Ext.getCmp('gridList');
            var sm = _this.MainGridCheckBoxModel;
            _this.ChangePage = true;
            //grid.getSelectionModel().removeListener('deselect', sm, this);
        });
//此段沒有如預料中起作用,原因不明
        //這一段以及注掉的那行,作用是消除“翻頁觸發的deselect”的影響

這樣其實就是讓顯示的列表中,合同號處於array陣列內的行保持被選中的狀態。

還需要維護這個array的內容,讓被選的加入,取消選擇的刪除。

    this.gridList.getSelectionModel().on('deselect', function (sm, rec) {
        //alert('取消勾選的name:'+record.data.ContractNo); 

        //alert(Ext.Array.include(this.array, '100')); undifine
        if (!_this.ChangePage) {//如果不是翻頁 那麼從array中刪除這個合同號
            Ext.Array.remove(this.array, rec.data.ContractNo);
        }
    },
    this);

    this.gridList.getSelectionModel().on('select',
        function (model, record, index) {
            this.C_contractno = record.data.ContractNo;//還有別處用得著這個“最後選中的合同號”
            this.array.push(record.data.ContractNo);//把合同號放進array
……………………
gridList就是使用storeList資料集的那個gridpanel,這兩個段落可以看作給它加上select和deselect方法……姑且這麼認為吧

後臺用的是C#.net2010 ,如上所見,這點東西和後臺一點關係都沒有……

相關推薦

extjs4當中gridpanel保持內容

這還真意外的花了一些時間,趕緊寫下來有助於記憶…… 說真的對extjs控制元件命令瞭解的太少了,還得多下點功夫才行…… Ext.extend(DsTruck.FinanceOut, Ext.Panel, { PageSize: 6,//用於控制每頁的行數

保存多的值

bubuko 若是 false span del mode 復數 eve als $("input[name=‘checkItem‘]").iCheck({   //初始化iCheck checkboxClass: ‘icheckbox_flat-blue‘, }); $

自己寫一個序列化form表單表單中有checkboxradio等

form表單中有複選框,單選框等var serializeform = function (formid) {    var form = document.getElementById(formid);    var arr = {};    for (var i = 0;

Extjs3.3.1 實現可記錄已經選擇的選項

第一步:定義記錄選擇選項變數: var collection=new Ext.util.MixedCollection(); 第二步:在store的lisenters屬性上新增兩個event. 如下: load:function(store, records, opt

Ext JS 列表裡的QuickTipManager不能正常顯示的問題解決方案

需求: 在列表裡渲染一個圖示,滑鼠懸浮上後,顯示一個彈出框,裡面根據資料不同而顯示對應的項。如下圖: 問題現象: 當對列表進行翻頁後,不能正常顯示小框,且瀏覽器控制檯反覆列印紅色錯誤。 程式碼: displaySegmentBinding:function (i

###①datatable客戶端分,全只能選中一(能力有限(雖然不是服務端分)同事-老大都不知道)+ ②【動態新增刪除CheckBox的ID】 JQuery datatables 表頭切換頁面時保持選中的問題

①datatable客戶端分頁,全選只能選中一頁(能力有限,(雖然不是服務端分頁),同事-老大都不知道)。 對於要解決的問題: 【 JQuery datatables 表頭複選框切換頁面時保持選中的問題 】 ==== 這個:https://blog.csdn.net/nihaoqiuli

給一個view新增旋轉動畫並且停止保持旋轉角度恢復可繼續旋轉

   RotateAnimation這個動畫類 animation.setFillAfter(true);方法是在動畫自動停止後保持原位,而手動停止呼叫clearAnimation()後旋轉的控制元件會變成最開始的位置,想到的解決方  法是讓動畫旋轉30度

ionic3開發系列——打包APK執行啟動白屏幾秒解決方案

問題描述: 開發過程中發現ionic3專案打包後在真機上執行,啟動頁後會有3-5秒的白屏時間。 解決方法: 在config.xml新增以下屬性: <!--預設有前四個配置,後面三個是另外新增

具有排序增加刪除動畫的scrollview

  網上主要都是手勢拖拽動畫,關於按鍵的動畫比較少,因此做了一套。   先來一個效果圖: 下面是原始碼:   public class HorizontalPageScorllView extends HorizontalScrollV

jqGrid 保持選中

jgGrid表格外掛按照正常情況下,設定multiselect:true,,就可以實現多選。但是當資料分頁顯示時,翻頁後,之前已經選擇的就會失效。 這裡通過設定一個全域性變數,快取已經選中的資料項,來實現翻頁後保持選中。 jqGrid 頁面程式碼 先是

爬取拉勾網資訊爬取

import requests #這個庫等價於 urllib 和urllib2 import bs4 #作用是用來解析網頁的 import json#主要是一種資料交換格式 import time de

Extjs Grid再重新整理無法回到第一

在用ExtJs的時候經常需要使用Grid來顯示資料,當資料過多時就需要翻頁。Ext的Ext.PagingToolbar翻頁提供了一個UI,真正的翻頁是在store裡面進行的。做翻頁的時候會碰到很多問題,比如,翻頁到第二頁後看到第一頁的重複資料;翻到第二頁後再點選toolba

Cocos2d-x動畫翻開淡入淡出動畫

這是一個Coco2d-x的翻開動畫,跟翻書一樣翻成另外一張圖片: --翻開動畫 function open(Sprite,func)     local array = CCArray:create()     array:addObject(CCDelayTime:cre

Word中只修改某一其它保持不變

問題來源:在用word2013編輯頁首頁尾時,所有頁的頁首和頁尾都同時變化,但現在只需要修改某一頁的內容,其它的頁不變。 **解決方法:**Word 2007、Word 2010以及Word 2103中把游標放在某一頁的頁末尾(下一頁將採用不同的頁首頁尾)

組的全、全不選點兩次attr()不生效、checkBox狀態不改變問題

複選框組的全選、全不選點選兩次後,attr不生效、checkBox狀態不改變問題,最後發現attr和prop的區別 <input type="checkbox" name="chk_all" i

類似智慧購票的demo--進入頁面預設焦點在第一個輸入框,輸入內容、回車、right時焦點自動跳到下一個當跳到select時下拉選項自動彈出並且可以按上下鍵選擇選擇完成再跳到下一個

要實現的效果:進入頁面後預設焦點在第一個輸入框,輸入內容、回車、right時焦點自動跳到下一個,當跳到select時,下拉選項自動彈出,並且可以按上下鍵選擇,選擇完成後再跳到下一個。 PS:自己模擬的一個簡單效果,但仍然存在問題:網上搜了許多,關於select自動彈出的問題

請設計一個演算法給一個字串進行二進位制編碼使得編碼字串的長度最短(哈弗曼編碼)

美團點評2016研發工程師程式設計題(二) 請設計一個演算法,給一個字串進行二進位制編碼,使得編碼後字串的長度最短。 輸入描述: 每組資料一行,為待編碼的字串。保證字串長度小於等於1000。 輸出描述: 一行輸出最短的編碼後長度。 輸入例子: MT-TECH-TEA

MFC TreeControl:選中某個節點的自動中子節點的

1、實現選中TreeControl中的某個複選框,子節點的複選框自動選中: 2、如上例,當點選根節點Windows前的複選框時,它的所有子節點前面的複選框都被選中; 3、實現該功能的思路是:

【無事水一發】ExtJS4 Ext.tree.Panel (無限層級)帶樹勾(父級子級)聯動程式碼

原創,轉載請註明出處~~ 勾選父節點,之下所有子節點自動勾選;反之自動取消子節點勾選(無限層級) 勾選所有子節點,父節點自動勾選;反之自動取消父節點勾選(無限層級) Ext.onReady(function() { var store = Ext.create('Ext.data

金蝶bos 自定義UI介面新增控制元件並且做業務處理

 /**      * 顯示工程型別      * @author daihao      *