html>
//搜索暂时没做,数据是出来了,但是却没法显示
<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"><br>Ext.QuickTips.init(); //初始化快速提示对象<br>function test() {<br> Ext.Msg.alert('title','test-yii-ext');<br>}<br>function renderSex(value) {<br> if (value == 'male') {<br> return "<span style='color:red;font-weight:bold;'>红男<img src='./images/male.jpg' / alt="解析Extjs与php数据交互(增删查改)_PHP教程" >";<br> } else {<br> return "<span style="max-width:90%">绿女<img src='./images/female.png' / alt="解析Extjs与php数据交互(增删查改)_PHP教程" >";<br> }<br>}<br>function init() <br>{<br><br> //1、创建url访问类。<br> var url = 'index.<a style="max-width:90%" title= "php" href="https://www.php.cn/zt/15714.html" target="_blank">php';<br> var _proxy = new Ext.data.HttpProxy({url:url});<br> //2、数据问题参数<br> var _jsonProperty = "totalProperty";<br> //数据根目录参数<br> var _jsonRoot = "root";<br> //Record显示列表对应关系<br> var _record = [{name:'id'},<br> {name:'name'},<br> {name:'pass'},<br> {name:'sex'},<br> {name:'email'}];<br> //创建JSONReader对象,需要设置记录总数,根目录名称,记录映射<br> var _reader = new Ext.data.JsonReader({totelPropetty:_jsonProperty,root:_jsonRoot},_record);<br> /**<br> * 封装一个客户端的Record对象缓存,为GridPanel提供数据入口<br> * 需要两个必须的参数<br> * 1、提供数据的地址:Proxy 代理类<br> * 2、数据的读取方式:Reader 类,这里通过JsonReader读取<br> */<br> var _store = new Ext.data.Store({<br> proxy:_proxy,<br> reader:_reader<br> });<br> /**<br> ColumnModel<br> * 数据在页面上显示标题信息,<br> * 顺序和Record对应<br> * sortable 是否排序<br> * dataIndex 进行对应的列,对应Record中的NAME<br> * <br> * handler方法中 第一个参数表示父类的对象,本例中为GridPanel对象。<br> * 第二个参数表示第几行。<br> * 第三个参数表示第几列。<br> */<br> var _cm = new Ext.grid.ColumnModel([<br> new Ext.grid.RowNumberer(),<br> new Ext.grid.CheckboxSelectionModel(), <br> {header:"ID",dataIndex:"id",width:50,sortable:true,menuDisabled:true},<br> {header:"用户名",dataIndex:"name",width:80,sortable:true},<br> {header:"密码",dataIndex:"pass",width:175,sortable:true},<br> {header:"性别",dataIndex:"sex",width:145,sortable:true,renderer:renderSex},<br> {header:"电子邮箱",dataIndex:"email",width:150,sortable:true}<br> ]);<br>/////////////////////////搜索<br> var logins = new Ext.form.FormPanel({<br> id:'myform',//分配表单id<br> title: '按用户名搜索',<br> width: 400,<br> defaultType: 'textfield',<br> frame: true,<br> // method: 'POST',<br> collapsible: true,//可折叠<br> bodyPadding: 5,<br><br> layout: 'column',//列布局<br><br> margin: '0 0 10 0',<br> items: [{<br> fieldLabel: '姓名',<br> labelWidth: 40,<br> id: 'name'<br> }],<br> buttons: [{<br> // xtype: 'button',<br> text: '搜索',<br> margin: '0 0 0 5',<br> handler: search<br> },{<br> // xtype: 'button',<br> text: '隐藏',<br> margin: '0 0 0 5',<br> handler: hide<br> }],<br><br> renderTo: "search"<br> })<br> logins.hide();<br> function hide()<br> {<br> logins.hide();<br> }<br>///////////////////////////////////////////////////////<br><br> ///////////////////////////////////////////////////////////////////////////////////////////<br> //获取数据<br> var ds = new Ext.data.Store({<br><br> //proxy告诉我们从哪获得数据,Ext.data.MemoryProxy专门解析js变量<br> //proxy:new Ext.data.MemoryProxy(data),<br> //通过http获取数据<br> proxy:new Ext.data.HttpProxy({<br> url:url}),<br><br> //获取json数据<br> reader:new Ext.data.JsonReader({<br> totalProperty:'totalProperty',<br> root:'root'<br> },Ext.data.Record.create([<br> {name:'id'},<br> {name:'name'},<br> {name:'pass'},<br> {name:'sex'},<br> {name:'email'}<br> ]))<br> });<br>//////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br> //自动分页<br> var _pageSize = 16;<br> var _toolbar = new Ext.PagingToolbar({<br> store:ds,<br> pageSize:_pageSize,<br> displayInfo:true,<br> displayMsg:'显示第{0}条到第{1}条记录,一共{2}条',<br> emptyMsg:'暂无数据'<br> });<br><br> //顶部工具栏按钮<br> var t_toolbar = [<br> {id:"addData",text:"用户添加",handler:addUser},"-",<br> {id:"updateData",text:"用户修改",listeners:{"click":updateUser}},"-",<br> {id:"deleteData",text:"删除选中用户",handler:removeUser},"-",<br> {id:"test",text:"测试选中",handler:chkSelects},"-",<br> {id:"search",text:"搜索",handler:jump}<br> ];<br> /**<br> * GridPanel对象<br> * 数据列表页面<br> * 必须设置 Store 数据访问对象和标题栏显示信息<br> * 即 Store和ColumnModel对象<br> */<br> var _grid = new Ext.grid.GridPanel({<br> headerAsText: false, // 如果有标题栏, 隐藏标题栏<br> collapsible: true,//可折叠<br> height:500,<br> width:1100,<br> frame:true,//圆角边框<br> store:ds,<br> title:'测试yii整合Ext',<br> cm:_cm,<br> bbar : _toolbar,<br> tbar : t_toolbar<br> });<br> ds.load({params:{start:0,limit:_pageSize}});<br> _grid.render('test_id');<br><br> //_grid.render();<br> /* 用户信息录入框,验证 */<br> var fpanel;<br> function f(){<br> fpanel = new Ext.form.FormPanel<br> ({ <br> frame : true,//边框圆角并且有背景色 <br> labelAlign : 'right', <br> waitMsgTarget : true, <br> autoScroll : true, <br> buttonAlign : 'center', <br> items : [<br> {xtype:"hidden",name:"id"}, <br> {xtype:"textfield",fieldLabel:"用户名",name:"name",anchor : "-20",allowBlank:false,//是否允许为空<br> blankText:"用户名不允许为空!",labelWidth : 20},<br> {xtype:"radiogroup",fieldLabel:"性别",columns:2,allowBlank:false,blankText:"性别不允许为空!",items:[{boxLabel:'男',name:'sex',inputValue:'male'},{boxLabel:'女',name:'sex',inputValue:'female'}]},<br> {xtype:"textfield",fieldLabel:"密码",name:"pass",allowBlank:false,//是否允许为空<br> blankText:"密码不允许为空!",anchor : "-20"},<br> {xtype:"textarea",fieldLabel:"电子邮箱",name:"email",allowBlank:false,//是否允许为空<br> blankText:"邮箱不允许为空!",anchor : "-20"}<br> ]<br> });<br>}<br><br> var win;<br> /* 增加用户 */<br> function addUser() <br> {<br> f();<br><br> win = new Ext.Window<br> ({ <br> title:"新增用户",<br> id:"win",<br> //animEl:"fly",<br> //layout:"fit",<br> width:350, <br> height:250, <br> closeAction : "close", <br> plain : true, <br> modal : true,// 模态窗口,当打开当前窗口时,后面的内容被遮挡 <br> bodyStyle:"padding:3px 0 0 3px", <br> layout:"form", <br> labelWidth:55, <br> items:[fpanel], <br> buttons:[<br> {text:"保存", handler :function()<br> { <br> //在保存的时候,因为Id值为空,所以不能转换到后台,后台报类型转换异常,可以将Id设值为0, <br> //在后台处理的时候,对于值为0的Id不获取 <br> fpanel.findByType("hidden")[0].setValue(0); <br> fpanel.getForm().submit({<br> url : "add.php",<br> method : "POST",<br> waitMsg : "保存数据...",<br><br> success : function(form, action) { <br> // 业务成功 <br> Ext.MessageBox.alert('提示','添加成功!');<br> win.close();<br> ds.load({params:{ start:0,limit:_pageSize} });<br> }, <br> failure : function(form, action) { <br> // 业务失败<br><br> <br> obj = Ext.util.JSON.decode(action.response.responseText);<br> Ext.MessageBox.alert('提示', obj.errors.reason);<br> win.close();<br><br> ds.load({params:{ start:0,limit:_pageSize} });<br> } <br> }); <br> } <br> },<br> { <br> text:"重置",handler:function()<br> { <br> fpanel.getForm().reset(); <br> } <br> }<br> ] <br> })<br> win.show();<br> // 因为重复使用window,有可能在修改后fpanel中还存在数据,所以要先重置<br><br> fpanel.getForm().reset();<br> }<br><br> <br> /* 修改用户信息 */<br> function updateUser() <br> {<br> var win_2;<br> var a = 3;<br> f();<br> var selectedRecord = _grid.getSelectionModel().getSelected(); <br> // 获得多个数据 <br><br> if (selectedRecord == undefined || selectedRecord == null)<br> { <br> Ext.MessageBox.alert("提示", "请先选择一条记录!"); <br> } else { <br> win_2 = new Ext.Window<br> ({ <br> title : "修改用户", <br> width : 350, <br> height : 250, <br> closeAction : "hide", <br> plain : true, <br> modal : true,// 模态窗口,当打开当前窗口时,后面的内容被遮挡 <br> bodyStyle : "padding:3px 0 0 3px", <br> //layout : "form",<br> layout:"fit", <br> labelWidth : 55, <br> items : [fpanel], <br> buttons : [<br> {text:"修改", handler:function() <br> {fpanel.getForm().submit<br> ({ <br> url:"edit.php", <br> method:"POST", <br> waitMsg:"数据修改中...", <br> success:function(form,action)<br> { <br> win_2.hide(); <br> Ext.MessageBox.alert("提示","数据修改成功"); <br> _ds.reload(); <br> },<br> failure : function(form, action) { <br> win_2.hide();<br> Ext.MessageBox.alert("提示","<font color='red'>数据修改失败");<br> _ds.load();<br> } <br> }); <br> } <br> },<br> {<br> text : "重置",handler:function() <br> {<br> fpanel.getForm().reset();<br> } <br> },<br> {<br> text: '关闭',handler: function()<br> {<br> win_2.close();<br> }<br> }<br> ] <br> });<br> }<br> win_2.show();<br> // 将选中的数据load到window中显示 <br> //alert(win_2);<br> win_2.getComponent(0).getForm().loadRecord(selectedRecord); <br><br> }<br><br> /* 删除用户 */<br> function removeUser(btn) <br> { <br> var selectedRecord = _grid.getSelectionModel().getSelected(); <br> if (selectedRecord == undefined || selectedRecord == null) <br> { <br> Ext.MessageBox.alert("提示", "请先选择一条记录!"); <br> } else { <br> Ext.MessageBox.confirm("提示信息", "确定要删除吗?", function(btn) <br> { <br> if (btn == "yes") <br> { <br> Ext.Ajax.request(<br> { <br> url:"del.php", <br> method:"POST", <br> params:{id : selectedRecord.data.id},<br> success:function(request, options)<br> { <br> var jsonRequest = Ext.util.JSON.decode(request.responseText);<br><br> if (jsonRequest == true) <br> {<br> Ext.Msg.alert("提示信息", "删除成功");<br> _grid.getStore().remove(selectedRecord); <br> ds.reload(); <br> } else { <br> Ext.Msg.alert("提示信息", "<font color='red'>删除失败"); <br> } <br> }, <br> failure : function() <br> { <br> Ext.MessageBox.show<br> ({ <br> title : "提示消息", <br> msg : "删除时发生错误" <br> }); <br> } <br> }); <br> } <br> }) <br> }<br> }<br><br> <br><br> function chkSelects()<br> { <br> var selects = _grid.getSelectionModel().getSelections(); <br> alert("选中的总数为:"+selects.length); <br><br> }<br>////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br> function search(){<br> //fpanel.GridPanel().reset();init();<br><br> logins.getForm().submit({ //提交表单事件<br><br> //clientValidation: true,<br> method:"POST", //提交方式(POSTT和GET)<br> url:"search.php", //表单提交URL地址<br> waitMsg:"请稍等,正在搜索...", //提交未完成提示框内容<br> waitTitle:"正在搜索", //提示框标题信息<br> });<br> var url = 'search.php';<br> // store.proxy=new Ext.data.HttpProxy({url:url}); <br> ds.reload();<br> //_proxy = new Ext.data.HttpProxy({url:url}); <br> //ds.load({params:{start:0,limit:_pageSize}});<br> //_grid.render('test_id');<br><br> }<br> function jump()<br> {<br> logins.show();<br> }<br> //////////////////////////////<br><br>}<br>Ext.onReady(init);<br></script>










