首页 > 编程 > JavaScript > 正文

Extjs 点击复选框在表格中增加相关信息行

2019-11-20 09:30:21
字体:
来源:转载
供稿:网友

功能效果:点击复选框在表格中自动增加相关信息行,复选框取消则表格中内容自动删除

初始效果大概是这样~~~~~

// 定义初始 存放表格数据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 点击复选框在表格中增加相关信息行,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表