Ext增删改查
增删改查思路及步骤
增删改查思路及步骤增删改查(CRUD)是计算机科学中常用的基本操作,用于对于数据存储系统(例如数据库)中的数据进行增加、删除、修改和查询操作。
以下是增删改查的思路以及一般步骤。
这四个操作是软件开发中最常见和重要的操作之一,对于数据的操作非常关键。
一、增加(Create):数据增加是指向数据库中添加数据。
常见的步骤如下:1.设计数据表结构:创建一个表格或者类来存储新数据,并确定字段类型、长度和关系。
2. 编写添加数据的代码:使用编程语言(如SQL、Python等)编写代码,来向数据库中添加数据。
3.执行代码:运行代码,将数据添加到数据库中。
二、删除(Delete):数据删除是指从数据库中删除数据。
常见的步骤如下:1.根据需求确定删除的条件:确定要删除的数据的特定条件,如ID、日期等。
2.编写删除数据的代码:使用编程语言编写代码,将符合条件的数据从数据库中删除。
3.执行代码:运行代码,删除数据库中的数据。
三、修改(Update):数据修改是指更新数据库中的数据,使其与最新的需求相适应。
常见的步骤如下:1.确定需要修改的数据:根据需求确定要修改的数据,并确定具体的修改内容。
2.编写修改数据的代码:使用编程语言编写代码,根据需求修改数据库中的数据。
3.执行代码:运行代码,将修改后的数据更新到数据库中。
四、查询(Retrieve):数据查询是指从数据库中获取数据。
1.确定查询的条件:根据需求确定查询的条件,如ID、日期、关键词等。
2.编写查询代码:使用编程语言编写代码,根据查询条件从数据库中获取数据。
3.执行查询:运行代码,执行查询并获得结果。
以上是增删改查的基本思路与步骤。
在现实的软件开发中,通常还会包含一些额外的处理,如输入验证、错误处理、事务处理等。
不同的编程语言和数据库系统可能有所不同的实现方式,但其基本概念和步骤大致相同。
在实际使用时,我们可以根据具体需求灵活应用以上步骤。
例如,对于数据库的设计,可以根据需要创建多个表格,并在表与表之间建立适当的关系。
ExtJS模块案例(增删改查)
ExtJS模块案例(增删改查)Ext.QuickTips.init();Ext.onReady(function () {//终端类型下拉列表数据源var comboStore = new Ext.data.JsonStore({url: '/AccessMaintenanceHandler/GetResListByResParent.ashx',root: 'Table',totalProperty: 'result',fields: ['Res_Name', 'Res_Id'],autoLoad: true});comboStore.on('beforeload', function () {var params = comboStore.baseParams;Ext.apply(params, {ParentCode: '8b4010451db44edfa7f7e1f9e6f20e12' //终端类型的Code});});comboStore.on('load', function (mystore, rds, op) {var newRecord = new mystore.recordType({ Res_Name: '全部', Res_Id: "" });comboStore.insert(0, newRecord);Ext.getCmp('TerminalType').setValue(""); //默认加载全部});//终端类型var DevicecomboStore = new Ext.data.JsonStore({url: '/AccessMaintenanceHandler/GetResListByResParent.ashx',root: 'Table',totalProperty: 'result',fields: ['Res_Name', 'Res_Id'],autoLoad: true});DevicecomboStore.on('beforeload', function () {var params = DevicecomboStore.baseParams;Ext.apply(params, {ParentCode: '8b4010451db44edfa7f7e1f9e6f20e12' //终端类型的Code});});var formPanel = new Ext.FormPanel({frame: true,title: '端⼝台账信息维护',layout: 'form',height: 300,autoWidth: true,id: 'formPanel',autoScroll: true,items: [{layout: 'column',items: [{layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'combo',fieldLabel: '终端类型',store: comboStore,typeAhead: false,editable: false,mode: 'local',triggerAction: 'all',id: 'TerminalType',displayField: 'Res_Name',valueField: 'Res_Id'}, {layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '设备序列号',emptyText: '设备序列号',id: 'SearchEquipmentCode', //设备编码width: 200}]}, {layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '设备名称',emptyText: '设备名称',id: 'SearchEquipmentName', //设备名称width: 200}]}]}]});//多选框var ckModel = new Ext.grid.CheckboxSelectionModel({singleSelect: false});//数据源var PortLedgerStore = new Ext.data.JsonStore({url: '/PortLedgerInfoHandler/SelectAll.ashx',root: 'Table',totalProperty: 'result',fields: [{ name: 'ID' },{ name: 'SAPCode' },{ name: 'IsEnable' },{ name: 'RowNumber' },{ name: 'Brand' },{ name: 'PortOffice' },{ name: 'EquipmentCode' },{ name: 'Address' },{ name: 'CabinetNumber' },{ name: 'SwitchIP' },{ name: 'SwitchNumber' },{ name: 'EquipmentName' },{ name: 'PortNumber' },{ name: 'SAPCode' },{ name: 'TPNumber' },{ name: 'TMacAddress' },{ name: 'VLAN' },{ name: 'TerminalType' },{ name: 'Res_Name' },{ name: 'TerminalAddress' },{ name: 'Remark' },{ name: 'Model' }],autoLoad: true});//加载后的条件PortLedgerStore.on('beforeload', function () {var params = PortLedgerStore.baseParams;Ext.apply(params, {TerminalType: Ext.getCmp('TerminalType').getValue(), //获取下拉框的类型ID EquipmentCode: Ext.getCmp('SearchEquipmentCode').getValue(), //设备序列号 EquipmentName: Ext.getCmp('SearchEquipmentName').getValue(), //设备名称limit: 20})});//端⼝台账的Gridvar PortLedgerGrid = new Ext.grid.GridPanel({id: 'PortLedgerGrid',region: "center",plit: true,border: true,store: PortLedgerStore,margins: '5 5 5 5',animCollapse: false,enableColumnMove: false,enableHdMenu: false,trackMouseOver: false,loadMask: { msg: '正在加载,请稍等...' },cm: new Ext.grid.ColumnModel([ckModel,{ header: 'ID', dataIndex: 'ID', width: 40, hidden: true },{ header: '序号', dataIndex: 'RowNumber', width: 40},{ header: '品牌', dataIndex: 'Brand', width: 60 },{ header: '型号', dataIndex: 'Model', width: 80 },{ header: '设备序列号', dataIndex: 'EquipmentCode', width: 80 },{ header: '设备位置', dataIndex: 'Address', width: 80 },{ header: '交换机IP地址', dataIndex: 'SwitchIP', width: 80 },{ header: '机柜号', dataIndex: 'CabinetNumber', width: 80 },{ header: '交换机序号', dataIndex: 'SwitchNumber', width: 80 },{ header: '设备名称', dataIndex: 'EquipmentName', width: 80 },{header: '端⼝号', dataIndex: 'PortNumber', width: 80 },{ header: '端⼝办公室', dataIndex: 'PortOffice', width: 80 },{ header: '终端端⼝号', dataIndex: 'TPNumber', width: 80 },{ header: '终端MAC地址', dataIndex: 'TMacAddress', width: 80 },{ header: 'VlAN', dataIndex: 'VLAN', width: 80 },{ header: '终端类型', dataIndex: 'Res_Name', width: 80 },{ header: '终端位置', dataIndex: 'TerminalAddress', width: 80 },{ header: '备注', dataIndex: 'Remark', width: 100 }]),bbar: new Ext.PagingToolbar({bodyStyle: "background-color:#DEECFD;padding:10 0 10 10",pageSize: 20, //设置每页记录条数store: PortLedgerStore,displayInfo: true,prevText: '上⼀页',nextText: '下⼀页',refreshText: '刷新',displayMsg: '显⽰第 {0} 条到 {1} 条记录,⼀共 {2} 条',emptyMsg: "没有记录",lastText: '最后⼀页',firstText: '第⼀页',beforePageText: '当前页',afterPageText: '共{0}页'}),tbar: ["->", '<a href="/PluginsFor2/ProcessWeb/Page/DownLoadFileTemplate/DownLoadFileTemplate.aspx?id=PortLedgerInfo" target=\"_blank\">下载模板</a>',{xtype: 'button',text: 'Excel导⼊',id: 'ReadExcel',name: 'ReadExcel',iconCls: 'imporicont',width: 60,handler: function () {//导⼊Excelvar ImportExcel = null;if (!!ImportExcel) {ImportExcel.destroy();}ImportExcel.open();ImportExcel.on('importsuccess', function (form, action) {var result = action.result.success;var tip = action.result.result;if (result == 'true') {PortLedgerGrid.getStore().load({ params: { start: 0, limit: 20} }); Ext.Msg.alert('提⽰', tip);}else {Ext.Msg.alert('提⽰', tip);}});}}, "-", {xtype: 'button',text: 'Excel导出',id: 'ExportExcel', //name: 'ExportExcel',iconCls: 'zengjia',width: 60,handler: function () {var record = PortLedgerGrid.getSelectionModel().getSelections(); ExportExcel(); //调⽤导出⽅法}}, "-", {xtype: 'button',text: '查询',name: 'Search',id: 'Search',iconCls: 'searchicon',width: 60,handler: function () {PortLedgerGrid.getStore().load({ params: { start: 0, limit: 20} });}}, "-", {xtype: 'button',text: '重置',id: 'Reset',name: 'Reset',iconCls: 'deleteicon',width: 60,handler: function () {Ext.getCmp('TerminalType').setValue('');Ext.getCmp('SearchEquipmentCode').setValue('');Ext.getCmp('SearchEquipmentName').setValue('');PortLedgerGrid.getStore().load({ params: { start: 0, limit: 20} });}}, "-", {xtype: 'button',text: '添加',id: 'add',name: 'add',iconCls: 'addicon',width: 60,handler: function () {var title = "新增";GridUpdate("Add", title);}}, "-", {xtype: 'button',text: '编辑',id: 'edit',name: 'edit',iconCls: 'editicon',width: 60,handler: function () {var record = PortLedgerGrid.getSelectionModel().getSelections();Ext.Msg.alert('提⽰', ' 请选择⼀条信息!');} else if (record.length == "1") {var title = "修改";GridUpdate("Update", title);} else {Ext.Msg.alert('提⽰', '只允许选中⼀条数据!');}}}, "-", {xtype: 'button',text: '删除',id: 'delete',name: 'delete',iconCls: 'deleteicon',width: 60,handler: function () {var record = PortLedgerGrid.getSelectionModel().getSelections(); //grid选中⾏ var PortNumber = record[0].data.PortNumber;var SAPCode = record[0].data.SAPCode;if (record.length == 0) {Ext.Msg.alert('提⽰', '请选择⼀条信息!');} else if (PortNumber != null && SAPCode != "") {Ext.Msg.alert('提⽰', '端⼝已被占⽤,⽆法操作!');} else {Remark();}}}],sm: ckModel});//删除show出的备注窗体function Remark() {var GridRemarkPanel = new Ext.form.FormPanel({border: false,frame: true,layout: 'form',autoWidth: true,border: false,width: 300,border: false,labelWidth: 70,items: [{xtype: 'textarea',fieldLabel: '备注',emptyText: '备注',id: 'GRemark',name: 'GRemark',width: 260,height: 100}]});var GridRemarkWindow = new Ext.Window({title: '删除',width: 400,modal: true,resizable: false,items: [GridRemarkPanel],buttonAlign: 'center',buttons: [{width: 100,text: '确认',handler: function () {var record = PortLedgerGrid.getSelectionModel().getSelections(); //grid选中⾏ var GRemark = Ext.getCmp("GRemark").getValue();if (GRemark == "") {Ext.MessageBox.alert('提⽰', '备注必填!');return false;Ext.Msg.confirm(' 提⽰', '确定要删除吗?', function (btn) {if (btn == "yes") {var ID = "";for (var i = 0; i < record.length; i++) {ID += record[i].data.ID + ','; //多⾏删除}var detail = Ext.getCmp("GRemark").getValue();var PortNumber = record[0].data.PortNumber;Ext.Ajax.request({url: '/PortLedgerInfoHandler/DeleteAllByPID.ashx',method: 'POST',params: {ID: ID},success: function (response) {Ext.Msg.alert('提⽰', '删除成功!');Ext.getCmp("PortLedgerGrid").getStore().reload();GridRemarkWindow.close();},failure: function (response) {Ext.Msg.alert("提⽰", '删除失败!');GridRemarkWindow.close();}});}});}}, {width: 100,text: '取消',handler: function () {GridRemarkWindow.close();}}]});GridRemarkWindow.show();}//Excel导出function ExportExcel() {var LoginEmp_Id = "";var myCheckboxItems = [];var model = Ext.getCmp("PortLedgerGrid").colModel;for (var i = 1; i < Ext.getCmp("PortLedgerGrid").colModel.config.length; i++) { if (model.config[i].dataIndex != "ID")myCheckboxItems.push({boxLabel: model.config[i].header,name: "ExportInfo",id: model.config[i].dataIndex,checked: true,inputValue: i});}var GridExportPanel = new Ext.form.FormPanel({height: 280,border: false,id: 'ExportPanel',frame: true,layout: 'column',autoWidth: true,items: [{xtype: 'checkboxgroup',id: 'ExportColumnModel',columns: 5,vertical: true,items: myCheckboxItems}]});title: '导出列选择',width: 550,height: 260,modal: true,resizable: false,items: [GridExportPanel],buttonAlign: 'center',buttons: [{width: 100,text: '确认',handler: function () {var itcIds = [];var cbgItem = Ext.getCmp('ExportPanel').findById('ExportColumnModel').items;var exportFields = '<root>'for (var i = 0; i < cbgItem.length; i++) {if (cbgItem.itemAt(i).checked) {if (cbgItem.itemAt(i).checked == "ID") {continue;}exportFields += "<row><headerText>" + cbgItem.itemAt(i)["boxLabel"] + "</headerText><columnName>" + cbgItem.itemAt(i)["id"] + "</columnName></row>";}}exportFields += '</root>';var baseParams = "";var params = "";var records = Ext.getCmp('PortLedgerGrid').getSelectionModel().getSelections();if (records.length > 0) {for (var i = 0; i < records.length; i++) {var ID = ""; //绑定的列名if (records[i].data.ID != null) {ID = records[i].data.ID;}var RowNumber = "";if (records[i].data.RowNumber != null) {RowNumber = records[i].data.RowNumber;}var Brand = "";if (records[i].data.Brand != null) {Brand = records[i].data.Brand;}var Model = "";if (records[i].data.Model != null) {Model = records[i].data.Model;}var EquipmentCode = "";if (records[i].data.EquipmentCode != null) {EquipmentCode = records[i].data.EquipmentCode;}var Address = "";if (records[i].data.Address != null) {Address = records[i].data.Address;}var CabinetNumber = "";if (records[i].data.CabinetNumber != null) {CabinetNumber = records[i].data.CabinetNumber;}var SwitchIP = "";if (records[i].data.SwitchIP != null) {SwitchIP = records[i].data.SwitchIP;}var PortOffice = "";if (records[i].data.PortOffice != null) {PortOffice = records[i].data.PortOffice;}var SwitchNumber = "";if (records[i].data.SwitchNumber != null) {var EquipmentName = "";if (records[i].data.EquipmentName != null) {EquipmentName = records[i].data.EquipmentName;}var PortNumber = "";if (records[i].data.PortNumber != null) {PortNumber = records[i].data.PortNumber;}var TPNumber = "";if (records[i].data.TPNumber != null) {TPNumber = records[i].data.TPNumber;}var TMacAddress = "";if (records[i].data.TMacAddress != null) {TMacAddress = records[i].data.TMacAddress;}var VLAN = "";if (records[i].data.VLAN != null) {VLAN = records[i].data.VLAN;}var Res_Name = "";if (records[i].data.Res_Name != null) {Res_Name = records[i].data.Res_Name;}var TerminalAddress = "";if (records[i].data.TerminalAddress != null) {TerminalAddress = records[i].data.TerminalAddress;}var Remark = "";if (records[i].data.Remark != null) {Remark = records[i].data.Remark;}baseParams += "<row>" +"<RowNumber>" + RowNumber + "</RowNumber>" +"<Model>" + Model + "</Model>" +"<Brand>" + Brand + "</Brand>" +"<EquipmentCode>" + EquipmentCode + "</EquipmentCode>" +"<Address>" + Address + "</Address>" +"<CabinetNumber>" + CabinetNumber + "</CabinetNumber>" +"<SwitchIP>" + SwitchIP + "</SwitchIP>" +"<PortOffice>" + PortOffice + "</PortOffice>" +"<SwitchNumber>" + SwitchNumber + "</SwitchNumber>" +"<EquipmentName>" + EquipmentName + "</EquipmentName>" +"<PortNumber>" + PortNumber + "</PortNumber>" +"<TPNumber>" + TPNumber + "</TPNumber>" +"<TMacAddress>" + TMacAddress + "</TMacAddress>" +"<VLAN>" + VLAN + "</VLAN>" +"<Res_Name>" + Res_Name + "</Res_Name>" +"<TerminalAddress>" + TerminalAddress + "</TerminalAddress>" +"<Remark>" + Remark + "</Remark>" +"</row>";}params = { xmlParams: baseParams };monExportExcel("/PluginsFor2/ProcessWeb/Page/ExportExcel/ExportExcel.aspx", params, "monPluginsHandler.dll", "monHandler", "ExportInfoByGridInfo", exportFields);ExportWindow.close();} else {baseParams = "<TerminalType>" + Ext.getCmp('TerminalType').getValue() + "</TerminalType>" + //设备类型 "<EquipmentCode>" + Ext.getCmp('SearchEquipmentCode').getValue() + "</EquipmentCode>" + //设备序列号 "<EquipmentName>" + Ext.getCmp('SearchEquipmentName').getValue() + "</EquipmentName>"; //设备名称; params = { xmlParams: baseParams };monExportExcel("/PluginsFor2/ProcessWeb/Page/ExportExcel/ExportExcel.aspx", params, "HC.ModelPluginsHandler.dll", "HY.HttpHandlers.PortLedgerInfoHandler", "ExportInfoByGridInfo", exportFields);ExportWindow.close();}}text: '取消',handler: function () {ExportWindow.close();}}]})ExportWindow.show();}//⿏标悬浮窗PortLedgerGrid.on('render', function (grid) {var view = Ext.getCmp('PortLedgerGrid').getView();Ext.getCmp('PortLedgerGrid').tooltip = new Ext.ToolTip({target: view.mainBody,delegate: '.x-grid3-cell',trackMouse: true,dismissDelay: 20000,renderTo: document.body,listeners: {beforeshow: function updateTipBody(tip) {var rowIndex = view.findRowIndex(tip.triggerElement);var columnIndex = view.findCellIndex(tip.triggerElement);var fieldName = Ext.getCmp('PortLedgerGrid').getColumnModel().getDataIndex(columnIndex); //获得列名(字段名) var text = "";text = Ext.getCmp('PortLedgerGrid').store.getAt(rowIndex).get(fieldName);if (text != null && text != "" && text != "-")tip.body.dom.innerHTML = text;elsereturn false;}}})});//新增、修改function GridUpdate(type, title) {var selectedRows = Ext.getCmp('PortLedgerGrid').getSelectionModel().getSelections();if(selectedRows!=''){var TerminalTypes= selectedRows[0].data.TerminalType;}else{var TerminalTypes = '';}var GridUpdatePanel = new Ext.form.FormPanel({border: false,frame: true,layout: 'form',autoWidth: true,border: false,width: 900,border: false,labelWidth: 70,items: [{layout: 'column',items: [{layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '端⼝号',emptyText: '端⼝号',id: 'PortNumber',name: 'PortNumber',width: 200}]}, {layout: 'form',labelWidth: 80,xtype: 'textfield',fieldLabel: '端⼝办公室',emptyText: '端⼝办公室',id: 'PortOffice',name: 'PortOffice',width: 200}]}, {layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '终端端⼝号',emptyText: '终端端⼝号',id: 'TPNumber',name: 'TPNumber',width: 200}]}, { layout: 'column',items: [{layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '终端MAC地址', emptyText: '终端MAC地址', id: 'TMacAddress',name: 'TMacAddress',width: 200}]}]}, {layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: 'VLAN',emptyText: 'VLAN', //型号id: 'VLAN',name: 'VLAN',width: 200}]}, {layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'combo',fieldLabel: '终端类型',store: DevicecomboStore, typeAhead: false,editable: false,mode: 'local',width: 200,triggerAction: 'all',id: 'Equipment_TypeId',displayField: 'Res_Name', valueField: 'Res_Id',value:TerminalTypes}]}, { layout: 'column',items: [{labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '终端位置',emptyText: '终端位置',id: 'TerminalAddress',name: 'TerminalAddress',width: 200}]}]}, {layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '机柜号',emptyText: '机柜号',id: 'CabinetNumber',name: 'CabinetNumber',width: 200}]}, {layout: 'form',labelWidth: 80,width: 260,items: [{xtype: 'textfield',fieldLabel: '设备SAP编号',emptyText: '设备SAP编号',id: 'SAPCode',name: 'SAPCode',width: 175}]}, {layout: 'form',width: 40,items: [{xtype: 'button',text: '...',id: 'show',name: 'show',width: 25,//disabled: true,handler: function () { //弹出设备⼦页var EquipmentSAPCodeWin = null;if (!!EquipmentSAPCodeWin) {EquipmentSAPCodeWin.destroy();}EquipmentSAPCodeWin = new HC.EquipmentSAPCode({checkModel: true,UserId: "", //使⽤⼈IDStatus: 'ffe4914c2c0942beab9250ece3950909' //使⽤状态:3申领及借⽤,4查询全部,其他类别,传递对应资源类型code});EquipmentSAPCodeWin.open();EquipmentSAPCodeWin.on('selectcomplete', function (record) {if (record == '' || record == null) {Ext.Msg.alert('提⽰', '请选择⼀条信息!');return false;}var EquipmentTypeName = record[0].data.EquipmentTypeName; //设备类型var EquipmentCode = record[0].data.EquipmentCode; //设备序列号Ext.getCmp("Model").setValue(record[0].data.Model); //设备型号Ext.getCmp("Brand").setValue(record[0].data.Brand); //设备品牌Ext.getCmp("Address").setValue(record[0].data.Address); //设备位置xExt.getCmp("SAPCode").setValue(record[0].data.SAPCode); //设备SAPExt.getCmp("EquipmentNamere").setValue(record[0].data.EquipmentName); //设备名称 Ext.getCmp("SwitchNumber").setValue(record[0].data.SwitchNumber);//交换机序号Ext.getCmp("SwitchIP").setValue(record[0].data.SwitchIP); //交换机Ip地址EquipmentSAPCodeWin.closeWin();});}}]}, {layout: 'column',items: [{layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '交换机IP地址',emptyText: '交换机IP地址',id: 'SwitchIP',name: 'SwitchIP',width: 200}]}]}, {layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '交换机序号',emptyText: '交换机序号',id: 'SwitchNumber',name: 'SwitchNumber',width: 200}]}, {layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '品牌',emptyText: '品牌',id: 'Brand',name: 'Brand',width: 200}]}, {layout: 'column',items: [{layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '型号',emptyText: '型号',id: 'Model',name: 'Model',width: 200}]}]}, {layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '设备位置',emptyText: '设备位置',id: 'Address',name: 'Address',width: 200}]}, {layout: 'form',labelWidth: 80,width: 300,items: [{xtype: 'textfield',fieldLabel: '设备名称',emptyText: '设备名称',name: 'EquipmentName',id: 'EquipmentNamere',width: 200}]}, {layout: 'column',items: [{layout: 'form',labelWidth: 80,width: 900,items: [{xtype: 'textarea',fieldLabel: '备注',emptyText: '备注',id: 'Remark',name: 'Remark',width: 800,height: 170}]}]}]}]});var GridUpdateWindow = new Ext.Window({title: title,width: 1000,modal: true,resizable: false,items: [GridUpdatePanel],buttonAlign: 'center',buttons: [{width: 100,text: '确认',handler: function () {if (type == "Add") {var PID = "";//同步var PortNumber = Ext.getCmp("PortNumber").getValue();var conn = Ext.lib.Ajax.getConnectionObject().conn;conn.open("POST", '/PortLedgerInfoHandler/SelectRepeat.ashx?PortNumber=' + PortNumber, false); conn.send(null);obj = conn.responseText == '' ? {} : Ext.decode(conn.responseText);if (obj.success == "false") {Ext.Msg.alert('提⽰', '端⼝号唯⼀!');return;}} else if (type == "Update") {var record = Ext.getCmp('PortLedgerGrid').getSelectionModel().getSelections();if (record.length == "0") {Ext.Msg.alert('提⽰', ' 请选择⼀条信息!');} else {PID = record[0].data.ID;}}var EquipmentCode = EquipmentCode;var PortNumber = Ext.getCmp("PortNumber").getValue();var TPNumber = Ext.getCmp("TPNumber").getValue();var TMacAddress = Ext.getCmp("TMacAddress").getValue();var PortOffice = Ext.getCmp("PortOffice").getValue();var VLAN = Ext.getCmp("VLAN").getValue();var TerminalAddress = Ext.getCmp("TerminalAddress").getValue(); var CabinetNumber = Ext.getCmp("CabinetNumber").getValue();var SwitchNumber = Ext.getCmp("SwitchNumber").getValue();var SwitchIP = Ext.getCmp("SwitchIP").getValue();var TerminalType = Ext.getCmp("Equipment_TypeId").getValue(); var SAPCode = Ext.getCmp("SAPCode").getValue();var Brand = Ext.getCmp("Brand").getValue();var Model = Ext.getCmp("Model").getValue();var Address = Ext.getCmp("Address").getValue();var EquipmentName = Ext.getCmp("EquipmentNamere").getValue(); var Remark = Ext.getCmp("Remark").getValue();if (PortNumber == "") {Ext.MessageBox.alert('提⽰', '端⼝号不能为空!');return false;}if (TPNumber == "") {Ext.MessageBox.alert('提⽰', '终端端⼝号不能为空!');return false;}if (TMacAddress == "") {Ext.MessageBox.alert('提⽰', 'MAC地址不能为空!');return false;}if (VLAN == "") {Ext.MessageBox.alert('提⽰', 'VLAN不能为空!');return false;}if (TerminalAddress == "") {Ext.MessageBox.alert('提⽰', '终端位置不能为空!');return false;}if (CabinetNumber == "") {Ext.MessageBox.alert('提⽰', '机柜号不能为空!');return false;}if (SwitchNumber == "") {Ext.MessageBox.alert('提⽰', '交换机序号不能为空!');return false;}if (TerminalType == "") {Ext.MessageBox.alert('提⽰', '类型不能为空!');return false;}if (SwitchIP == "") {Ext.MessageBox.alert('提⽰', '交换机IP地址不能为空!');return false;}if (Remark == "") {Ext.MessageBox.alert('提⽰', '备注必填!');return false;}Ext.Msg.confirm('提⽰', '确认保存?', function (btn) {if (btn == 'yes') {Ext.Ajax.request({url: '/PortLedgerInfoHandler/InsertUpdate.ashx',method: 'POST',params: {PID: PID,VLAN: VLAN,Brand: Brand,Model: Model,。
ext与php增删查改
<html><head>//搜索暂时没做,数据是出来了,但是确没法显示<link rel="stylesheet"type="text/css"href="./js/resources/css/ext-all.css"/><script type="text/javascript"src="./js/jquery.js"></script><script type="text/javascript"src="./js/ext-base.js"></script><script type="text/javascript"src="./js/ext-all.js"></script><script type="text/javascript"src="./js/ext-lang-zh_CN-min.js"></script><script type="text/javascript">Ext.QuickTips.init(); //初始化快速提示对象function test() {Ext.Msg.alert('title','test-yii-ext');}function renderSex(value) {if (value == 'male') {return "<span style='color:red;font-weight:bold;'>红男</span><img src='./images/male.jpg' />";} else {return "<span style='color:green;font-weight:bold;'>绿女</span><img src='./images/female.png' />";}}function init(){//1、创建url访问类。
Extjs 4.2 Grid增删改及后台交互
Posted 周二, 07/02/2013 - 12:20 by admin上次发了Easyui Datagrid的增删改查的使用学习记录后一直想整理下基于Extjs4.2的Grid学习使用记录。
苦于抽不出时间,一直拖到现在。
不得不说,Extjs确实很强大,新版的Neptune 风格也很入我眼,但毕竟没怎么用过,第一次用,也不敢上来就搞什么自定义组件,也就纯粹的model+store+panel声明式创建表格了。
抛开分页,抛开排序,今天只简单讲一下最近使用中总结出来的rest形式增删改查数据的方式。
发现这种方式挺不错的,故而分享下。
代码Example如下:定义Modelview sourceprint?01.Ext.define('Person', {02.extend: 'Ext.data.Model',03.fields: [{name: 'id',04.type: 'int',eNull: true06.}, 'email', 'first', 'last'],07.validations: [{ type: 'length',08.field: 'email',09.min: 110.}, {type: 'length',11.field: 'first',12.min: 113.}, {type: 'length',14.field: 'last',15.min: 116.}]17.});构造store、创建panelview sourceprint?001.var store = Ext.create('Ext.data.Store', {002.autoLoad: true,003.autoSync: true,004.model: 'Person',005.proxy: {006.type: 'ajax',007.api: {008.read: 'url/read',//查询009.create: 'url/create',//创建010.update: 'url/update',//更新011.destroy: 'url/destroy'//删除012.},013.reader: {014.type: 'json',015.root: 'data'016.},017.writer: {018.type: 'json'019.}020.},021.listeners: {022.write: function(store, operation){023.var record = operation.getRecords()[0], = Ext.String.capitalize(operation.action), 025.verb;026.027.028.if(name == 'Destroy') {029.record = operation.records[0];030.verb = 'Destroyed';031.} else{032.verb = name + 'd';033.}034.Ext.example.msg(name, Ext.String.format("{0} user: {1}", verb, record.getId()));035.036.}037.}038.});039.040.var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {041.listeners: {042.cancelEdit: function(rowEditing, context) {043.// Canceling editing of a locally added, unsaved record: remove it044.if(context.record.phantom) {045.store.remove(context.record);046.}047.}048.}049.});050.051.var grid = Ext.create('Ext.grid.Panel', {052.renderTo: document.body,053.plugins: [rowEditing],054.width: 400,055.height: 300,056.frame: true,057.title: 'Users',058.store: store,059.iconCls: 'icon-user',060.columns: [{061.text: 'ID',062.width: 40,063.sortable: true,064.dataIndex: 'id'065.}, {066.text: 'Email',067.flex: 1,068.sortable: true,069.dataIndex: 'email',070.field: {071.xtype: 'textfield'072.}073.}, {074.header: 'First',075.width: 80,076.sortable: true,077.dataIndex: 'first',078.field: {079.xtype: 'textfield'080.}081.}, {082.text: 'Last',083.width: 80,084.sortable: true,085.dataIndex: 'last',086.field: {087.xtype: 'textfield'088.}089.}],090.dockedItems: [{091.xtype: 'toolbar',092.items: [{093.text: 'Add',094.iconCls: 'icon-add',095.handler: function(){096.// empty record097.store.insert(0, new Person());098.rowEditing.startEdit(0, 0);099.}100.}, '-', {101.itemId: 'delete',102.text: 'Delete',103.iconCls: 'icon-delete',104.disabled: true,105.handler: function(){106.var selection =grid.getView().getSelectionModel().getSelection()[0]; 107.if(selection) {108.store.remove(selection);109.}110.}111.}]112.}]113.});114.grid.getSelectionModel().on('selectionchange', function(selModel, selections){115.grid.down('#delete').setDisabled(selections.length === 0);很简单,使用api的方式,包括有增删查改,在前台的操作都会被extjs记录下来,再执行sync 的时候就可以自动根据状态请求相应的url了。
ext增删改查
第一个版本Ext+struts2 +struts2 json-plugin 增删查改完成(还没有分页,不能批量删,修改之后又重新查一次)Action:public String findAll(){//pager=mdao.findAll("from Member",currentPage,pagerMethod);// mlist=pager.getList();mlist=mdao.findAll();try {String json=JSONUtil.serialize( mlist);System.out.println(json);} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}super.success=true;return SUCCESS;}public String findOne(){mem=mdao.findById(mem.getId());success=true;List ll=new ArrayList();ll.add(mem);setMlist(ll);return SUCCESS;}public String delete(){mdao.delete(mdao.findById(mem.getId()));success=true;return SUCCESS;}public String save(){mdao.save(mem);success=true;return SUCCESS;}public String modify(){mdao.attachDirty(mem);success=true;return SUCCESS;}public String saveOrUpdate(){if(mem.getId()==null)return save();else return modify();}Struts2 Xml:<action name="member_*"class="spring.memberAction"method="{1}"> <result type="json"><param name="mlist">mlist</param><param name="ignoreHierarchy">false</param></result></action>Js:Ext.BLANK_IMAGE_URL = 'js/ext-2.3/resources/images/default/s.gif'; Ext.onReady(function(){Ext.QuickTips.init();var form1;_jsonReader读取后台数据var _jsonReader = new Ext.data.JsonReader( {root : 'mlist'}, [ {name : 'id',mapping : 'id',type : 'int'}, {name : 'uname',mapping : 'uname'}, {name : 'password',mapping : 'password'},{name : 'address',mapping : 'address'}]);制列名var cm_member = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), { header : '用户ID',width : 90,sortable : true,dataIndex : 'id',editor : new Ext.form.TextField({allowBlank : false,maxLength : 50}) }, {header : '联系人',width : 85,sortable : true,dataIndex :'uname',resizable : false,editor : new Ext.form.TextField({allowBlank : false,maxLength : 20}) }, {header : 'password',width : 85,sortable : true,dataIndex :'password',resizable : false,editor : new Ext.form.TextField({allowBlank : false,maxLength : 20}) }, {header : '地址',id : 'address',sortable : true,dataIndex : 'address', editor : new Ext.form.TextField({allowBlank : false,maxLength : 200}) }]);cm_member.defaultSortable = true;加载数据Ext.data.Storevar ds_member = new Ext.data.Store({proxy: newExt.data.HttpProxy({url:'member_findAll.do'}),//调用的动作reader:_jsonReader});GridPanel 存放数据var grid_member = new Ext.grid.GridPanel({collapsible : true,// 是否可以展开title : '用户管理',id:"grid_member",el:"example-grid",ds : ds_member,store: ds_member,columns: [{header: "id", width: 120, dataIndex: 'id', sortable: true},{header: "uname", width: 120, dataIndex: 'uname', sortable: true},{header: '密码', width: 120,dataIndex: 'password',sortable:true},{header: '地址', width: 120,dataIndex: 'address', sortable:true}],width:550,height:500,// 添加分页工具栏bbar : new Ext.PagingToolbar( {pageSize : 10,store : ds_member,displayInfo : true,//是否显示下面的信息displayMsg : '显示 {0}-{1}条 / 共 {2} 条',emptyMsg : "无数据。
ExtJS增删改查,分页功能(精)
ExtJs:代码挺多的,部分功能同事帮实现<%@ page language='java' contentType='text/html; charset=utf-8'pageEncoding='utf-8'%>Action:增删除改查分页全在里面。
package com.wys.web;import java.util.List; import java.util.Random;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONArray;import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import com.opensymphony.xwork2.ActionSupport;public class UserCRUDAction extends ActionSupport implements ServletRequestAware, ServletResponseAware {private HttpServletResponse response; private HttpServletRequest request;private Integer empno; private String ename; private String job; private Integer sal; private String start; private String limit;public String getStart( { return start;}public void setStart(String start { this.start = start; }public String getLimit( { return limit; }public void setLimit(String limit { this.limit = limit;}public Integer getEmpno( { return empno; }public void setEmpno(Integer empno { this.empno = empno; }public String getEname( { return ename; }public void setEname(String ename { this.ename = ename; }public String getJob( { return job; }public void setJob(String job { this.job = job; }public Integer getSal( { return sal;}public void setSal(Integer sal { this.sal = sal; }public void setServletResponse(HttpServletResponse response { this.response=response;}public void setServletRequest(HttpServletRequest request { this.request=request;}public String userList(throws Exception{if(start==null||("".equals(start{this.start = "0"; }if(limit==null||("".equals(limit{this.limit = "10"; }UserDAO dao=new UserDAOImpl(;List users=dao.query(ename,start,limit; int count = dao.getCount(ename; System.out.println(count;JSONArray js=JSONArray.fromObject(users;StringBuffer sb = new StringBuffer("{total:".append(count.append(",results:".append(js.toString(.append("}";response.setHeader("Cache-Control", "no-cache"; response.setContentType("text/json;charset=UTF-8";response.getWriter(.write(sb.toString(;return null;}public String addUser(throws Exception{ User u=new User(; u.setEmpno(new Random(.nextInt(1000; u.setEname(ename;u.setJob(job;u.setSal(sal;u.setDeptno(20;UserDAO dao=new UserDAOImpl(; dao.addUser(u;response.reset(;response.getWriter(.write("{success:true}";return null; }public String updateUser(throws Exception{ User u=new User(; u.setEmpno(empno;u.setEname(ename;u.setJob(job;u.setSal(sal;UserDAO dao=new UserDAOImpl(; dao.updateUser(u;response.reset(;response.getWriter(.write("{success:true}";return null; }public String delUser(throws Exception{ UserDAO dao=new UserDAOImpl(; dao.delUser(empno;response.reset(;response.getWriter(.write("{success:true}";return null; }}DAO:package com.wys.web;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;public class UserDAOImpl implements UserDAO { public List query(String ename,String start,String limit {Connection con=null;PreparedStatement stmt=null;ResultSet rs=null;List users=new ArrayList (;//stmt=con.prepareStatement("select empno,ename,job from (select empno,ename,job,rownum r from emp where rownum =?";int min=Integer.parseInt(start+1;int max=min+Integer.parseInt(limit;StringBuffer sql = new StringBuffer("select empno,ename,job,sal,deptno from (select empno,ename,job,sal,deptno,rownum r from emp where 1=1 ";if(ename!=null&&!("".equals(ename.trim({sql.append(" and ename like '%"+ename.trim(+"%'";}sql.append(" and rownum<"+max+" where r>="+min;System.out.println(sql;try{con=DbUtil.getConnection(;stmt=con.prepareStatement(sql.toString(;rs=stmt.executeQuery(;while(rs.next({User u=new User(;u.setEmpno(rs.getInt("empno";u.setEname(rs.getString("ename";u.setJob(rs.getString("job";u.setSal(rs.getInt("sal";u.setDeptno(rs.getInt("deptno";users.add(u;}return users;}catch(Exception e{e.printStackTrace(;}finally{}return null; }public void addUser(User u { Connection con=null; PreparedStatement stmt=null;try{con=DbUtil.getConnection(;stmt=con.prepareStatement("insert into emp(empno,ename,job,sal,deptno values(?,?,?,?,?";stmt.setInt(1, u.getEmpno(;stmt.setString(2, u.getEname(;stmt.setString(3, u.getJob(;stmt.setInt(4, u.getSal(;stmt.setInt(5, u.getDeptno(;stmt.executeUpdate(;}catch(Exception e{e.printStackTrace(;}finally{}}public void updateUser(User u { Connection con=null; PreparedStatement stmt=null; try{con=DbUtil.getConnection(;stmt=con.prepareStatement("update emp set ename=?,job=?,sal=? where empno=?";stmt.setString(1, u.getEname(;stmt.setString(2, u.getJob(;stmt.setInt(3,u.getSal(;stmt.setInt(4, u.getEmpno(;stmt.executeUpdate(;}catch(Exception e{e.printStackTrace(;}finally{}}public void delUser(Integer empno { Connection con=null;PreparedStatement stmt=null;try{con=DbUtil.getConnection(;stmt=con.prepareStatement("delete from emp where empno=?";stmt.setInt(1, empno;stmt.executeUpdate(;}catch(Exception e{e.printStackTrace(;}finally{}}@Overridepublic int getCount(String ename {Connection con=null;PreparedStatement stmt=null;ResultSet rs=null;int count = 0;StringBuffer sql = new StringBuffer(" select count(1 cnt from emp where 1=1";if(ename!=null&&!("".equals(ename.trim({sql.append(" and ename like '%"+ename.trim(+"%'";}System.out.println(sql;try{con=DbUtil.getConnection(;stmt= con.prepareStatement(sql.toString(;rs=stmt.executeQuery(;while(rs.next({ count = rs.getInt("cnt";}return count;}catch(Exception e{e.printStackTrace(;}finally{} return 0; }}s2:。
增删改查简单-解释说明
增删改查简单-概述说明以及解释1.引言1.1 概述在现代信息时代,数据的管理和处理变得越来越重要。
无论是个人用户还是企业组织,都需要对数据进行增加、删除、修改以及查询等操作。
这些操作合称为增删改查(CRUD)操作,是数据管理中最基本、最常见的操作。
增删改查操作是数据管理的核心,它们在各个领域都得到广泛应用。
在个人数据管理方面,人们通过增加数据来记录生活中的重要事件、保存联系人信息等;删除数据可以清理不再需要的内容、释放存储空间;修改数据使其与当前状态保持一致;查询数据能够快速找到所需的信息。
而在企业层面,增删改查操作更是不可或缺的。
企业需要通过增加数据来记录各项业务活动,包括客户信息、订单记录、销售数据等,为后续的决策和分析提供基础;删除数据可以清理过时的、无效的或违规的内容;修改数据可以纠正错误或更新信息;查询数据则是企业分析和决策的重要依据。
在进行增删改查操作时,不仅需要掌握相应的方法和技术,还需要注意一些注意事项。
例如,在增加数据时,应确保数据的完整性和准确性,避免重复或错误的录入;在删除数据时,要谨慎操作,避免误删重要数据;在修改数据时,需要考虑影响范围和相关性,并确保相应的审批和权限控制;在查询数据时,要充分利用相关的搜索、过滤和排序功能,以提高查询效率。
评估增删改查操作的效果也是很重要的。
通过对增删改查操作的效果进行评估,可以不断改进和优化数据管理的流程和方法,提高工作效率和数据质量。
综上所述,增删改查操作是数据管理中不可或缺的基本操作,无论是个人用户还是企业组织,都需要掌握和运用这些操作技巧。
正确地进行增删改查操作,能够更好地管理和利用数据,提高工作效率和决策能力。
1.2 文章结构文章结构部分的内容如下:2. 正文2.1 增2.1.1 增加数据的重要性2.1.2 增加数据的方法2.1.3 增加数据的注意事项2.1.4 增加数据的效果评估2.2 删2.2.1 删除数据的重要性2.2.2 删除数据的方法2.2.3 删除数据的注意事项2.2.4 删除数据的效果评估2.3 改2.3.1 修改数据的重要性2.3.2 修改数据的方法2.3.3 修改数据的注意事项2.3.4 修改数据的效果评估2.4 查2.4.1 查询数据的重要性2.4.2 查询数据的方法2.4.3 查询数据的注意事项2.4.4 查询数据的效果评估以上是本文的文章结构。
extjs增删改查
/lovehuahui/article/details/5091047xtJs中常用到的增,删,改,查操作分类:extJs 2009-12-28 14:36 1252人阅读评论(3) 收藏举报刚刚参加完公司的项目,第一次使用extjs编写用户界面还是有点头痛,现在小花整理好了,希望为初学者做个参考。
[java]view plaincopy1.<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>2.3.<html>4. <head>5. <title>extJs中常用到的增删改查操作的示例代码</title>6. <!-- CommonJs.jsp 为 ExtJS 引入的路径 -->7. <%@ include file="../extJs/CommonJs.jsp"%>8. <mce:script type="text/javascript"><!--9. /**10. * 作者:花慧11. * 时间: 2009年12月22日12. * 内容: extJs中常用到的增,删,改,查操作13. */14.15. //设置每页显示的行数默认为1016.17. var QUERY_PAGE_SIZE = 10;18.19. /**20. * SearchQueryForm():绘制查询表单21. */22. function searchQueryForm()23. {24. //form 使用的时候建议设为局部变量,可以通过Ext.getCmp(“”)去获取form25.26. var queryForm = null;27. queryForm = new Ext.FormPanel({28. id:'queryForm', //指定queryForm的Id29. renderTo:'searchPanel', //指向form所在的div层30. labelWidth:70, //label标签的width占页面的百分比31. region:'north',32. border:false, //以显示面板的body元素的边界,虚假隐藏起来(默认为true)33. badyBorder:false, //显示面板的body元素,假以隐藏它(默认为true的内部边界)34. labelAlign:'right', //label标签的对齐方式35. frame:true, //自定义面板的圆形边界,边界宽度1px。
增删改查项目流程
增删改查项目流程在软件开发和项目管理中,增删改查(CRUD)是指对数据库中的数据进行增加(Create)、删除(Delete)、修改(Update)和查询(Retrieve)的操作。
在项目开发过程中,对数据的增删改查是非常常见的操作,因此建立一个清晰的流程来处理这些操作是非常重要的。
本文将介绍增删改查项目流程的具体步骤和注意事项。
一、增加项目流程1. 确定需求:在进行数据增加操作之前,首先要明确需求,包括新增数据的类型、格式、以及所需的字段等。
2. 创建表结构:根据需求,设计数据库表结构,包括表名、字段名、数据类型、主键、外键等。
3. 编写SQL语句:根据表结构,编写SQL语句来创建新的数据表或向现有表中插入新的数据。
4. 数据验证:在插入新数据之前,需要进行数据验证,确保数据的完整性和准确性。
5. 插入数据:使用INSERT语句向数据库中插入新的数据。
6. 测试:对新增数据的插入操作进行测试,确保数据的正确性和完整性。
二、删除项目流程1. 确定需求:在进行数据删除操作之前,需要明确需求,包括要删除的数据类型、条件等。
2. 编写SQL语句:根据需求,编写DELETE语句来删除数据库中的数据。
3. 数据验证:在删除数据之前,需要进行数据验证,确保删除操作的准确性和完整性。
4. 删除数据:执行DELETE语句,删除数据库中符合条件的数据。
5. 测试:对删除数据的操作进行测试,确保数据被正确删除。
三、修改项目流程1. 确定需求:在进行数据修改操作之前,需要明确需求,包括要修改的数据类型、条件、以及修改的字段等。
2. 编写SQL语句:根据需求,编写UPDATE语句来修改数据库中的数据。
3. 数据验证:在修改数据之前,需要进行数据验证,确保修改操作的准确性和完整性。
4. 修改数据:执行UPDATE语句,修改数据库中符合条件的数据。
5. 测试:对修改数据的操作进行测试,确保数据被正确修改。
四、查询项目流程1. 确定需求:在进行数据查询操作之前,需要明确需求,包括要查询的数据类型、条件、以及需要返回的字段等。
增删改查导入导出 手册
增删改查导入导出手册增删改查是软件开发中常见的四个基本操作,用于对数据进行操作和管理。
导入导出是指将数据从一个系统或文件中导入到另一个系统或文件中,或者将数据从一个系统或文件中导出到另一个系统或文件中。
下面将详细介绍增删改查和导入导出的相关内容。
增删改查(CRUD)操作是软件开发中最基本的操作之一。
它们对应于对数据的创建、读取、更新和删除操作。
增删改查可以应用于各种类型的数据,如数据库中的表格数据、文件中的内容等。
增加(Create)是指向数据库或文件中插入新的数据记录。
创建操作需要提供必要的数据,并将其添加到数据库或文件的适当位置。
例如,向数据库的表格中插入一条新的用户记录,或向文件中添加一段文本。
删除(Delete)是指从数据库或文件中删除现有的数据记录。
删除操作需要提供删除条件,并根据条件删除相应的数据。
例如,从数据库的表格中删除不需要的用户记录,或从文件中删除指定的内容。
修改(Update)是指更新数据库或文件中现有的数据记录。
修改操作需要提供要更新的数据和更新条件,并根据条件更新相应的数据。
例如,更新数据库的表格中用户记录的联系方式,或更改文件中指定内容的某些属性。
查询(Retrieve)是指从数据库或文件中检索特定数据记录。
查询操作需要提供查询条件,并根据条件检索相应的数据。
例如,从数据库的表格中查询满足一定条件的用户记录,或从文件中检索特定的内容。
在软件开发中,增删改查操作通常与用户界面和数据存储交互,以便用户可以方便地对数据进行操作和管理。
开发人员可以使用编程语言和相关的库或框架来实现这些操作。
导入和导出操作是将数据从一个系统或文件中转移到另一个系统或文件中的过程。
导入是将数据从一个源中读取,并将其放入目标中的过程。
导出是将数据从一个源中提取,并将其保存到目标中的过程。
在现实生活中,导入和导出操作经常用于将数据从一个软件系统转移到另一个软件系统。
例如,将用户信息从一个数据库导入到另一个数据库,或将电子表格中的数据导出为CSV文件。
增删改查的使用场景
增删改查的使用场景
增删改查是数据库操作中的四种基本操作,包括插入、删除、更新和查询数据。
这些操作在许多应用程序中都有广泛的使用场景,下面是一些常见的例子:
1. 插入数据(增):当需要将新的数据记录添加到数据库中时,使用插入操作。
例如,在一个电子商务网站中,当用户创建一个新的订单时,需要将订单信息插入到订单表中。
2. 删除数据(删):当需要从数据库中删除不再需要的数据记录时,使用删除操作。
例如,在一个论坛应用程序中,当管理员删除一个用户的帖子时,需要从帖子表中删除相应的记录。
3. 更新数据(改):当需要修改数据库中现有的数据记录时,使用更新操作。
例如,在一个客户关系管理系统中,当客户的联系信息发生变化时,需要将其在客户表中的记录进行更新。
4. 查询数据(查):当需要从数据库中获取数据时,使用查询操作。
这是数据库操作中最常用的操作之一。
例如,在一个新闻网站中,需要根据不同的条件查询新闻文章,并将其显示给用户。
总之,增删改查操作是数据库管理系统的核心功能,它们在各种应用程序中都有广泛的使用场景。
无论是管理电子商务网站、处理客户关系、管理库存还是其他数据驱动的应用程序,都需要使用增删改查操作来有效地管理和处理数据。
ExtJs4.2静态文档的增删改
<!DOCTYPE html><html><head lang="en"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><link href="../ext4.2/resources/css/ext-all-neptune.css" rel="stylesheet"/><script type="text/javascript" src="../ext4.2/ext-all-debug.js"></script><script type="text/javascript">Ext.onReady(function () {Ext.create('Ext.data.Store', {storeId: 'persons',fields: ['id', 'name', 'email', 'phone'],idProperty: 'id',data: {'items': [{ id: '0001', 'name': 'Lisa', "email": "lisa@", "phone": "555-111-1224" },{ id: '0002', 'name': 'Bart', "email": "bart@", "phone": "555-222-1234" },{ id: '0003', 'name': 'Homer', "email": "home@", "phone": "555-222-1244" },{ id: '0004', 'name': 'Marge', "email": "marge@", "phone": "555-222-1254" },{ id: '0005', 'name': 'Bart', "email": "bart@", "phone": "555-222-1234" },{ id: '0006', 'name': 'Homer', "email": "home@", "phone": "555-222-1244" },{ id: '0007', 'name': 'Marge', "email": "marge@", "phone": "555-222-1254" },{ id: '0008', 'name': 'Lisa', "email": "lisa@", "phone": "555-111-1224" },{ id: '0009', 'name': 'Bart', "email": "bart@", "phone": "555-222-1234" },{ id: '0010', 'name': 'Homer', "email": "home@", "phone": "555-222-1244" },{ id: '0011', 'name': 'Marge', "email": "marge@", "phone": "555-222-1254" },{ id: '0012', 'name': 'Bart', "email": "bart@", "phone": "555-222-1234" },{ id: '0013', 'name': 'Homer', "email": "home@", "phone": "555-222-1244" },{ id: '0014', 'name': 'Marge', "email": "marge@", "phone": "555-222-1254" }]},proxy: {type: 'memory',reader: {type: 'json',root: 'items',render: 'array'}},autoLoad: true});//行编辑器var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {clicksToMoveEditor: 2,clicksToEdit: 2,autoCancel: false,cancelEdit: function () {var me = this;if(me.editing){me.getEditor().cancelEdit();var record = me.context.record.getData(0);var id = record.id;if(id==''){var grid = me.context.grid;var items = grid.getSelectionModel().getSelection();grid.store.remove(items);}}},listeners: {'edit': function (editor, e) {// console.log(e);var id = '';if(e.record.data.id != ""){//有id,则为更新数据库//ajax向后台更新数据}else{//无id,则为插入一条记录//ajax向后台添加数据id="0015";}e.record.data.id = id;mit();}}})//单元格编辑器var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {clicksToEdit: 2,autoCancel: false,listeners: {'edit': function (editor, e) {mit();}}})Ext.create('Ext.grid.Panel', {title: 'Grid表格',selType: "rowmodel", //选择模式行选择模式multiSelect: true,// selType:"cellmodel", //选择模式单元格选择模式columnLines: true, //列分割线stripeRows: true, //隔行换色store: Ext.data.StoreManager.lookup('persons'),defaults: {editable: true,value: "无"},columns: [{xtype: 'rownumberer'},{ text: '编号', dataIndex: 'id'},{ text: '姓名', dataIndex: 'name', editor: "textfield"},{ text: '电子邮件', dataIndex: 'email', flex: 1, editor: "textfield"},{ text: '电话号码', dataIndex: 'phone', editor: "textfield"}],height: 550,width: 700,tbar: [{xtype: 'button',text: '添加',handler: function () {// ponentQuery.query('grid')[0].getStore().add(p);rowEditing.cancelEdit();var p = {id: '',name: '',email: '',phone: ''}//insert :向store指定位置添加数据//loadData: 在store的最后添加一行数据Ext.data.StoreManager.lookup('persons').insert(0,p);rowEditing.startEdit(0,0);// console.log(ponentQuery.query('grid')[0].getStore());}},{xtype: 'button',text: '删除',handler: function () {var sm = ponentQuery.query('grid')[0].getSelectionModel();var personArr = sm.getSelection();if (personArr.length != 0) {Ext.Msg.confirm("提示", "共选中" + personArr.length + "条数据,是否确认删除?", function (btn) {if (btn == 'yes') {//先删除后台再删除前台//ajax 删除后台数据成功则删除前台数据;失败则不删除前台数据//Extjs 3.x 删除// Ext.Array.each(personArr, function (p) {//Ext.data.StoreManager.lookup('persons').remove(p);// });//Extjs 4.x 删除Ext.data.StoreManager.lookup('persons').remove(personArr);} else {return;}});} else {Ext.Msg.alert("提示", "无选中数据");}}}],bbar: [{xtype: 'pagingtoolbar',store: Ext.data.StoreManager.lookup('persons'),pageSize: 5,displayInfo: true,displayMsg: '第{0}条到第{1}条,一共{2}条记录',emptyMsg: "没有符合查询条件的信息"}],plugins: [rowEditing// cellEditing],renderTo: Ext.getBody()});// //编辑器提交修改的监听// //单元格编辑器提交的方法?// ponentQuery.query('grid')[0].on('edit',function(editor,e){ // //提交修改的内容// mit();// });});</script></head><body></body></html>。
增删改查思路及步骤
增删改查思路及步骤1.引言1.1 概述在编写本文时,我们将介绍增删改查(CRUD)操作的思路和步骤。
增删改查是指对数据进行新增、删除、修改和查询的一系列操作。
这些操作在软件开发和数据管理中非常常见,是许多应用程序和系统的重要组成部分。
增加数据的操作是指向数据库或其他数据存储系统添加新的数据记录。
在进行增加数据操作时,我们需要明确所需添加的数据内容,并确保该数据满足预设的数据模型和结构。
删除数据的操作是指从数据库或其他数据存储系统中移除已有的数据记录。
在执行删除数据操作时,我们需要明确要删除的数据的标识或位置,并确保该删除操作不会对其他相关数据产生意外影响。
修改数据的操作是指对数据库或其他数据存储系统中的既有数据进行更新或修改。
在进行修改数据操作时,我们需要明确要修改的数据的标识和要进行的修改内容,并确保该修改操作不会破坏现有的数据完整性和一致性。
查询数据的操作是指根据特定条件从数据库或其他数据存储系统中获取所需的数据记录。
在进行查询数据操作时,我们需要明确所需数据的条件和查询方式,并确保查询结果的准确性和完整性。
通过本文我们将详细介绍每种操作的思路和步骤,并提供相关示例和实践经验。
我们希望读者在阅读本文后能够全面了解增删改查操作,并能够在实际应用中灵活运用这些操作。
最后,我们还将总结增删改查操作的思路和步骤,并提出未来进一步研究的方向,以推动这一领域的发展和创新。
1.2 文章结构本文将以增删改查(CRUD)的思路和步骤为主线,探讨在数据处理中的重要性和具体实施方法。
文章将分为以下几个主要部分:(1)引言:介绍本文的主题和背景,包括增删改查的概念和在实际应用中的重要性。
同时,对文章的结构和目的进行简要说明。
(2)正文:本部分将重点讨论增加数据、删除数据、修改数据和查询数据的思路和步骤。
对于每个操作,我们将阐述其背后的原理和方法,并提供具体的实例和步骤说明。
这将有助于读者全面理解和掌握增删改查的基本操作。
增删改查操作或方法
增删改查操作或方法增加(Create)数据:1.使用INSERT语句插入新的记录到数据库表中。
2.调用API或库函数来创建一个新的对象,并将其保存到内存或数据库中。
3.使用图形界面或命令行工具,提供一个表单或交互式界面,以便用户输入新的数据。
删除(Delete)数据:1.使用DELETE语句从数据库表中删除特定的记录。
2.调用API或库函数来删除指定的对象。
3.提供一个删除功能的图形界面或命令行工具,以便用户选择并删除数据。
修改(Update)数据:1.使用UPDATE语句更新数据库表中的记录。
2.调用API或库函数更新指定的对象。
查询(Retrieve)数据:1.使用SELECT语句从数据库表中检索特定的记录。
2.调用API或库函数以检索指定的对象。
3.提供一个功能的图形界面或命令行工具,允许用户输入条件并返回相关的数据。
以下是一些常见的增删改查操作的代码示例(以关系型数据库为例):增加数据:```sqlINSERT INTO table_name (column1, column2, ...) VALUES(value1, value2, ...);```删除数据:```sqlDELETE FROM table_name WHERE condition;```修改数据:```sqlUPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;```查询数据:```sqlSELECT column1, column2, ... FROM table_name WHERE condition;```以下是一些常见的增删改查操作的代码示例(以编程语言为例):增加数据:```pythondef create_data(data):#调用数据库或API创建新数据pass```删除数据:```pythondef delete_data(id):#调用数据库或API删除指定数据pass```修改数据:```pythondef update_data(id, data):#调用数据库或API更新指定数据pass```查询数据:```pythondef retrieve_data(condition):#调用数据库或API查询满足条件的数据pass```根据实际需求,增删改查操作可以有许多变种。
数据库操作基础增删改查
数据库操作基础增删改查增加(Insert)操作是将新的数据插入到数据库中。
在执行插入操作时,需要指定插入的表格和要插入的数据字段。
插入时还可以选择插入的位置,可以在表格的头部、中部或尾部插入数据。
插入操作是数据库中最常见的操作之一,它可以帮助我们将新的数据添加到数据库中,以便进一步使用和管理。
删除(Delete)操作是从数据库中删除数据。
在执行删除操作时,需要指定删除的表格和要删除的数据行。
删除操作可以根据一些条件来删除数据,比如删除一些表格中所有满足一些条件的数据行。
删除操作可以帮助我们清理数据库中的无用数据,以提高数据库的性能和效率。
修改(Update)操作是更新数据库中的数据。
在执行更新操作时,需要指定更新的表格、要更新的数据行以及要更新的数据字段和新的值。
更新操作可以根据一些条件来更新数据,比如更新一些表格中满足一些条件的数据行的一些字段的值。
更新操作可以帮助我们修正数据库中的错误数据或者更新过时的数据,以保证数据库中的数据的准确性和完整性。
查询(Select)操作是从数据库中检索数据。
在执行查询操作时,需要指定查询的表格和要查询的数据字段。
查询操作可以根据一些条件来检索数据,比如检索一些表格中所有满足一些条件的数据行。
查询操作可以帮助我们查找和获取数据库中的有用数据,以便进一步分析和处理。
总结起来,增加、删除、修改和查询是数据库操作基础中最常见和最基本的操作。
通过这些操作,我们可以对数据库中的数据进行插入、删除、更新和检索,以满足我们对数据的不同需求。
在实际应用中,我们需要根据具体的需求和场景来选择和使用这些操作,以达到最好的数据管理和处理效果。
增删改查总结范文
增删改查总结范文增删改查是计算机科学中常用的几个基本操作,用来对数据进行管理和操作。
这几个操作主要用于对各种数据结构进行操作,包括但不限于数据库、链表、树等。
在日常软件开发中,增删改查操作是非常常见的,下面将对它们进行详细总结。
1. 增加操作(Insert):增加操作即向数据结构中添加新的元素。
在数据库中,通常使用INSERTINTO语句来实现数据的插入。
在编程中,可以使用相应的数据结构提供的函数或方法来实现数据的添加。
增加操作的实现方式有多种,例如可以在链表的头部或尾部添加新的节点。
对于数组或列表来说,可以通过将新元素添加到末尾的方式来实现增加操作。
对于数据库来说,可以通过执行SQLINSERTINTO语句来实现数据的添加。
2. 删除操作(Delete):删除操作即将数据结构中的元素删除。
在数据库中,通常使用DELETEFROM语句来删除数据。
在编程中,可以使用相应的数据结构提供的函数或方法来实现数据的删除。
删除操作的实现方式也有多种,例如可以删除链表中的一些节点,或者通过将数组或列表中的元素标记为删除状态来实现。
对于数据库来说,可以执行SQLDELETEFROM语句来删除数据。
3. 修改操作(Update):修改操作即对数据结构中的元素进行修改。
在数据库中,通常使用UPDATE语句来修改数据。
在编程中,可以使用相应的数据结构提供的函数或方法来实现数据的修改。
修改操作的实现方式也有多种,例如可以修改链表中的一些节点的值,或者通过修改数组或列表中的元素的值来实现。
对于数据库来说,可以执行SQLUPDATE语句来修改数据。
4. 查询操作(Select):查询操作即从数据结构中检索所需的数据。
在数据库中,通常使用SELECT语句来查询数据。
在编程中,可以使用相应的数据结构提供的函数或方法来实现数据的查询。
查询操作的实现方式也有多种,例如可以遍历链表并找到所需的节点,或者通过索引来访问数组或列表中的元素。
extjs4grid新增、删除、修改
extjs4grid新增、删除、修改删除与修改的操作,分两块进行。
页面删除与后台删除。
因此在页面上进行删除或修改后成功后,后台只传递一个SUCCESS标记,若后台同步成功,则在页面的store中执行删除或者修改。
减少网络中的数据传输。
但是这样有一个bug,就是当用户新增了幻影数据,并且与真实数据一起修改填写提交后,后台已经写入数据库。
然后此时再删除之前添加的幻影数据,会导致id(代表一条记录的主键,本文代码中是userId)传递不到后台,导致无法查询删除。
解决方案是当后台处理成功后,前台重新加载页面,但是这样网络负担就加重了。
使之前的优势丧失[javascript]view plaincopy1.Ext.onReady(function() {2.Ext.define('User', {3.extend : 'Ext.data.Model',4.fields : [{ : 'userId',6.type : 'int',eNull : true//这样数字如果值为空则不会自动转成0,则提交时注意后台bean类中的属性int要用对象类型,否则解析出错8.}, { : 'loginName',10.type : 'string'11.}, { : 'password',13.type : 'string'14.}, { : 'remark',16.type : 'string'17.}, { : 'roleId',19.type : 'float',eNull : true21.}, { : 'rightId',23.type : 'float',eNull : true25.}, { : 'platformNo',27.type : 'string'28.}, { : 'groupId',30.type : 'float',eNull : true32.}, { : 'net',34.type : 'string'35.}, { : 'email',37.type : 'string'38.}, { : 'linkman',40.type : 'string'41.}, { : 'tel',43.type : 'string'44.}, { : 'fax',46.type : 'string'47.}, { : 'address',49.type : 'string'50.}],51.idProperty : 'userId'// 极为重要的配置。
增删改查功能描述
增删改查功能描述
增删改查功能是数据库操作中最基本的操作,包括增加、删除、修改和查询四个部分。
以下是这四个功能的详细描述:
1. 增:指的是在数据库中添加新的数据记录。
在进行添加操作时,通常需要编写插入语句,向数据库表中插入一条新的数据行,并为其分配一个唯一的标识符,以便对记录进行唯一标识和查找。
2. 删:指的是从数据库中删除一个或多个已有的数据记录。
在进行删除操作时,通常需要编写删除语句,定位需要删除的记录,然后将其从数据库表中删除。
需要注意的是,删除操作是不可逆的,因此在执行删除操作前需要谨慎确认。
3. 改:指的是在已有的数据库记录中进行修改内容或数据项的操作。
在进行修改操作时,通常需要编写更新语句,定位到需要修改的记录,然后用新的数据替换原来的数据。
和删除操作一样,修改操作也是不可逆的,需要谨慎确认。
4. 查:指的是在数据库中显示或检索数据记录的操作。
通过查询操作,可以从数据库表中检索出满足特定条件的数据行,并将结果显示在浏览器或应用程序中。
查询操作是数据库操作中最常用的功能之一,它可以帮助用户快速找到所需的数据。
在实际的软件开发过程中,增删改查操作通常会配合数据库设计和后端代码实现,以便对数据库进行高效的管理和维护。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ext增删改查作者:huaxia524151 | 更新日期:2011-05-24 | 源网站连接Ext增删改查的简介与内容<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>用户列表</title></head><script type="text/javascript">Ext.onReady(function(){//定义数据集对象var typeStore = new Ext.data.Store({//配置分组数据集//autoLoad :true,reader: new Ext.data.XmlReader({totalRecords: "results",record: "Users",id: "id"},Ext.data.Record.create([{name: "id"},{name: "username"},{name: "password"}])),proxy : new Ext.data.HttpProxy({url : "usersext.do?method=getUsersList"})})//创建工具栏组件var toolbar = new Ext.Toolbar([{text : "新增用户",iconCls:"add",handler : showAddUsersType},"-",{text : "修改用户",iconCls:"option",handler : showModifyUsersType},"-",{text : "删除用户",iconCls:"remove",handler : showDeleteUsersType}]);//创建Grid表格组件var cb = new Ext.grid.CheckboxSelectionModel()var usersGrid = new Ext.grid.GridPanel({applyTo : "grid-div",tbar : toolbar,frame:true,store: typeStore,viewConfig : {autoFill : true},sm : cb,columns: [//配置表格列new Ext.grid.RowNumberer({header : "行号",width : 40}),//表格行号组件cb,{header: "编号", width: 80, dataIndex: "id", sortable: true,hidden:true},{header: "姓名", width: 180, dataIndex: "username", sortable: true},{header: "密码", width: 280, dataIndex: "password", sortable: true}],bbar: new Ext.PagingToolbar({pageSize: 15,store: typeStore,displayInfo: true,displayMsg: "显示第 {0} 条到 {1} 条记录,一共{2} 条",emptyMsg: "没有记录"})});typeStore.load({params:{start:0, limit:15}});//创建新增或修改用户类型信息的form表单Ext.QuickTips.init();Ext.form.Field.prototype.msgTarget = "side";//统一指定错误信息提示方式var usersForm = new Ext.FormPanel({labelSeparator : ":",frame:true,border:false,items : [{xtype:"textfield",width : 200,allowBlank : false,blankText : "类型名称不能为空",name : "username",fieldLabel:"姓名"},{xtype:"textfield",width : 200,name : "password",fieldLabel:"密码"},{xtype:"hidden",name : "id"}],buttons:[{text : "关闭",handler : function(){win.hide();}},{text : "提交",handler : submitForm }]});//创建弹出窗口var win = new Ext.Window({layout:"fit",width:380,closeAction:"hide",height:200,resizable : false,shadow : true,modal :true,closable:true,bodyStyle:"padding:5 5 5 5",animCollapse:true,items:[usersForm]});//显示新建用户类型窗口function showAddUsersType(){usersForm.form.reset();usersForm.isAdd = true;win.setTitle("新增用户信息");win.show();}//显示修改用户类型窗口function showModifyUsersType(){var usersList = getUsersIdList();var num = usersList.length;if(num > 1){Ext.MessageBox.alert("提示","每次只能修改一条用户信息。
")}else if(num == 1){usersForm.isAdd = false;win.setTitle("修改用户信息");win.show();var usersId = usersList[0];loadForm(usersId);}}//显示删除用户对话框function showDeleteUsersType(){var usersList = getUsersIdList();var num = usersList.length;if(num > 1){Ext.MessageBox.alert("提示","每次只能删除一条用户信息。
")}else if(num == 1){Ext.MessageBox.confirm("提示","您确定要删除所选用户吗?",function(btnId){if(btnId == "yes"){var usersId =usersList[0];deleteUsers(usersId);}})}}//删除用户类型function deleteUsers(usersId){var msgTip = Ext.MessageBox.show({title:"提示",width : 250,msg:"正在删除用户信息请稍后......"});Ext.Ajax.request({url : "usersext.do?method=deleteUsers",params : {usersId : usersId},method : "POST",success : function(response,options){msgTip.hide();var result =Ext.util.JSON.decode(response.responseText);if(result.success){//服务器端数据成功删除后,同步删除客户端列表中的数据var index = typeStore.find("id",usersId);if(index != -1){var rec = typeStore.getAt(index)typeStore.remove(rec);}Ext.Msg.alert("提示","删除用户信息成功。
");}else{Ext.Msg.alert("提示","该用户已包含"+result.num+"本用户信息不能删除!");}},failure : function(response,options){msgTip.hide();Ext.Msg.alert("提示","删除用户类型请求失败!");}});}//加载表单数据function loadForm(usersId){usersForm.form.load({waitMsg : "正在加载数据请稍后",//提示信息waitTitle : "提示",//标题url :"usersext.do?method=getUsersById",//请求的url地址params : {usersId:usersId},method:"GET",//请求方式success:function(form,action){//加载成功的处理函数//Ext.Msg.alert("提示","数据加载成功");},failure:function(form,action){//加载失败的处理函数Ext.Msg.alert("提示","数据加载失败");}});}//提交表单数据function submitForm(){//判断当前执行的提交操作,isAdd为true表示执行用户类型新增操作,false表示执行用户类型修改操作if(usersForm.isAdd){//新增用户信息usersForm.form.submit({clientValidation:true,//进行客户端验证waitMsg : "正在提交数据请稍后",//提示信息waitTitle : "提示",//标题url :"usersext.do?method=addUsers",//请求的url地址method:"POST",//请求方式success:function(form,action){//加载成功的处理函数win.hide();updateUsersList(ersId);Ext.Msg.alert("提示","新增用户成功");},failure:function(form,action){//加载失败的处理函数Ext.Msg.alert("提示","新增用户失败");}});}else{//修改用户信息usersForm.form.submit({clientValidation:true,//进行客户端验证waitMsg : "正在提交数据请稍后",//提示信息waitTitle : "提示",//标题url :"usersext.do?method=modifyUsers",//请求的url地址method:"POST",//请求方式success:function(form,action){//加载成功的处理函数win.hide();updateUsersList(ersId);Ext.Msg.alert("提示","修改用户成功");},failure:function(form,action){//加载失败的处理函数Ext.Msg.alert("提示","修改用户失败");}});}}//明细数据修改后,同步更新用户列表信息function updateUsersList(usersId){var fields = getFormFieldsObj(usersId);var index = typeStore.find("id",fields.id);if(index != -1){var item = typeStore.getAt(index);for(var fieldName in fields){item.set(fieldName,fields[fieldName]);}mitChanges();}else{var rec = new Ext.data.Record(fields);typeStore.add(rec);}}//取得表单数据function getFormFieldsObj(usersId){var fields = usersForm.items;var obj = {};for(var i = 0 ; i < fields.length ; i++){var item = fields.itemAt(i);var value = item.getValue();obj[] = value;}if(Ext.isEmpty(obj["id"])){obj["id"] = usersId;}return obj;}//取得所选用户function getUsersIdList(){var recs =usersGrid.getSelectionModel().getSelections();var list = [];if(recs.length == 0){Ext.MessageBox.alert("提示","请选择要进行操作的用户!");}else{for(var i = 0 ; i < recs.length ; i++){var rec = recs[i];list.push(rec.get("id"))}}return list;}});</script><body><div id="grid-div" style="width:100%; height:100%;"/></body></html><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+path+"/";%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript"src="<%=basePath%>/pagesExt/js/excel.js"></script><title>收入列表</title></head><script type="text/javascript">Ext.onReady(function(){//定义数据集对象var bookStore = new Ext.data.Store({//autoLoad :true,reader: new Ext.data.XmlReader({totalRecords: "results",record: "Book",id: "id"},Ext.data.Record.create([{name: "id"},{name: "bookName"},{name: "author"},{name: "typeName"},{name: "price"},{name: "brief"}])),proxy : new Ext.data.HttpProxy({url : "bookext.do?method=getBookList"})})//创建工具栏组件var toolbar = new Ext.Toolbar([{text : "新增收入",iconCls:"add",handler:showAddBook},"-",{text : "修改收入",iconCls:"option",handler:showModifyBook},"-",{text : "删除收入",iconCls:"remove",handler:showDeleteBooks},"-",{text : "总收入",iconCls:"tot",handler : showTotalPay},"-",new Ext.Toolbar.TextItem("按时间查询:"),{xtype:"datefield",width : 150,allowBlank : false,blankText : "不能为空",id : "times",name : "times",emptyText:"请选择时间",format:"Y-m-d"},{iconCls:"find",handler:onItemCheck },"-",{text : "导出数据",iconCls:"down",handler:downExcel}]);//创建Grid表格组件var cb = new Ext.grid.CheckboxSelectionModel()var bookGrid = new Ext.grid.GridPanel({applyTo : "grid-div",frame:true,tbar : toolbar,store: bookStore,stripeRows : true,autoScroll : true,viewConfig : {autoFill : true},sm : cb,columns: [//配置表格列new Ext.grid.RowNumberer({header : "行号",width : 40}),//表格行号组件cb,{header: "收入编号", width: 1, dataIndex: "id", sortable: true,hidden:true},{header: "收入名称", width: 80, dataIndex: "bookName", sortable: true},{header: "作者", width: 80, dataIndex: "author", sortable: true},{header: "类型", width: 80, dataIndex: "typeName", sortable: true},{header: "金额", width: 80, dataIndex: "price", sortable: true},{header: "简介", width: 80, dataIndex: "brief", sortable: true}],bbar: new Ext.PagingToolbar({pageSize: 15,store: bookStore,displayInfo: true,displayMsg: "显示第 {0} 条到 {1} 条记录,一共{2} 条",emptyMsg: "没有记录"})});bookStore.load({params:{start:0, limit:15}});//按时间查询方法function onItemCheck(){var dd=Ext.get("times").getValue();if(dd=="请选择时间"){dd = "";}bookStore.reload({params:{start:0,limit:15,dd:dd}}); };//创建新增或修改收入信息的form表单Ext.QuickTips.init();Ext.form.Field.prototype.msgTarget = "side";//统一指定错误信息提示方式var bookForm = new Ext.FormPanel({labelSeparator : ":",frame:true,border:false,items : [{xtype:"textfield",width : 200,allowBlank : false,blankText : "收入名称不能为空",name : "bookName",fieldLabel:"收入名称"},{xtype:"textfield",width : 200,allowBlank : false,blankText : "收入作者不能为空",name : "author",fieldLabel:"作者"},{xtype:"combo",width : 200,allowBlank : false,blankText : "必须选择收入类型",hiddenName : "bookTypeId",name : "typeName",store : new Ext.data.Store({autoLoad :true,reader: newExt.data.XmlReader({totalRecords: "results",record: "BookType",id: "id"},Ext.data.Record.create([{name: "id"},{name: "title"},{name: "detail"}])),proxy : newExt.data.HttpProxy({url : "bookext.do?method=getBookTypeList"})}),//设置数据源allQuery:"allbook",//查询全部信息的查询字符串triggerAction: "all",//单击触发按钮显示全部数据editable : false,//禁止编辑loadingText : "正在加载收入类型信息",//加载数据时显示的提示信息displayField:"title",//定义要显示的字段valueField : "id",emptyText :"请选择收入类型",mode: "remote",//远程模式fieldLabel:"类型"},{xtype:"textfield",width : 200,name : "price",fieldLabel:"金额"},{xtype:"textarea",width : 200,name : "brief",fieldLabel:"简介"},{xtype:"hidden",name : "id"}],buttons:[{text : "关闭",handler : function(){win.hide();}},{text : "提交",handler : submitForm}]});//创建弹出窗口var win = new Ext.Window({layout:"fit",width:380,closeAction:"hide",height:280,resizable : false,shadow : true,modal :true,closable:true,bodyStyle:"padding:5 5 5 5",animCollapse:true,items:[bookForm]});//显示新建收入窗口function showAddBook(){bookForm.form.reset();bookForm.isAdd = true;win.setTitle("新增收入信息");win.show();}//显示修改收入窗口function showModifyBook(){var bookList = getBookIdList();var num = bookList.length;if(num > 1){Ext.MessageBox.alert("提示","每次只能修改一条收入信息。