功能效果:點擊復選框在表格中自動增加相關信息行,復選框取消則表格中內容自動刪除

初始效果大概是這樣~~~~~
// 定義初始 存放表格數據var gridItems = [];//省份復選框var $provinceCheckbox01 = new Ext.form.CheckboxGroup({xtype: 'checkboxgroup',fieldLabel: '省份選擇',labelWidth: 60,columns: 9,vertical: true,margin: '10 0 0 15',defaults: {labelWidth: 80,width: 60,labelAlign: "left"},items: provinceItems, //provinceItems是從其他渠道獲取的數據listeners: {change: OnChange // 復選框改變事件}});//表格初始數據模型var gridPanelStore = new Ext.data.Store({fields: ['discount', 'provinceId', 'provinceName'],data: {'items': ''},proxy: {type: 'memory',reader: {type: 'json',root: 'items'}}});// gridvar $grid = new Ext.grid.Panel({store: gridPanelStore,selType: 'rowmodel',singleSelect: true,margin: '20 0 0 0',columns: [{xtype: 'rownumberer',header: '序號',width: 70,align: 'center'}, {header: '省份',width: 150,sortable: true,menuDisabled: true,align: 'center',dataIndex: 'provinceName'}, {header: '折扣',width: 100,menuDisabled: true,sortable: true,align: 'center',dataIndex: 'discount',editor: {allowBlank: false}}],dockedItems: [{xtype: "pagingtoolbar",dock: "bottom",displayInfo: true}],plugins: [cellEditing]});//事件監聽function OnChange(newValue, oldValue, eOpts) {// 清空數據gridItems = [];//選中省份IDvar checkedId = this.getValue().xxx;//判斷選中數量if(checkedId==undefined){gridItems = [];} else if (checkedId.length == undefined) {for (var i = 0; i < provinceItems.length; i++) {if (provinceItems[i].inputValue == checkedId) {gridItems[0] = {"provinceId": checkedId,"provinceName": provinceItems[i].boxLabel,"discount": "1"};}}}else if(checkedId.length !== undefined){for(var j = 0;j<checkedId.length;j++){for (var o = 0; o < provinceItems.length; o++) {if (provinceItems[o].inputValue == checkedId[j]) {gridItems[j] = {"provinceId": checkedId[j],"provinceName": provinceItems[o].boxLabel,"discount": "1"};}}}}//console.log($gridItems);$grid.store.loadData($gridItems, false);}類似的這種功能實際用到的可能不是很多。
做這個功能的時候,點擊復選框之后獲取到的數據一直放不到grid中。
最開始是想把取到的值,直接賦給 gridPanelStore.data.items ,但是賦值之后 用 store.reload() 刷新表格數據總是報錯,說是方法錯了。
我覺得(不一定對啊~),可能是因為我的數據模型里面套了太多層,導致直接從grid的store reload()才回報錯的。
最后查找API,才發現了loadData 可以直接給數據傳值。

我用的是Boolean值是 false。
以上所述是小編給大家介紹的Extjs 點擊復選框在表格中增加相關信息行,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
|
新聞熱點
疑難解答