HTML代码: <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html xmlns ="http://www.w3.org/1999/xhtml" > < head > < title > 游戏分类 </ title > < link rel ="stylesheet" rev ="stylesheet" href ="/stylesheets/ext-all.css" type ="text/css" media ="all" /> < link href ="/stylesheets/mainstyle.css" rel ="stylesheet" type ="text/css" /> < script type ="text/javascript" src ="/javascripts/ext-base.js" charset ="utf-8" ></ script > < script type ="text/javascript" src ="/javascripts/ext-all.js" charset ="utf-8" ></ script > < script type ="text/javascript" src ="/javascripts/xmltrans.js" charset ="utf-8" ></ script > < script type ="text/javascript" src ="/javascripts/xmleditor.js" charset ="utf-8" ></ script > < script type ="text/javascript" src ="/javascripts/htmleditor.js" charset ="utf-8" ></ script > < script type ="text/javascript" src ="/javascripts/ext-lang-zh_cn.js" charset ="utf-8" ></ script > < script type ="text/javascript" src ="/javascripts/Ext.ux.UploadDialog.packed.js" ></ script > < script src ="/javascripts/ext-webservices.js" type ="text/javascript" ></ script > <!-- ExtJS调用WCF的专用文件 --> < script type ="text/javascript" src ="/javascripts/WCFHttpProxy.js" ></ script > < script type ="text/javascript" src ="/javascripts/WCFJsonReader.js" ></ script > < script type ="text/javascript" src ="/javascripts/WCFHelper.js" ></ script > < script type ="text/javascript" src ="/javascripts/SearchField.js" ></ script > </ head > < body > < div id ="newCharge01" class ="x-panel-bwrap" > < div id ="group" > </ div > </ div > < script type ="text/javascript" > ... <!-- //表单,点击添加或修改时弹出的窗口中的表单对象 var EmpForm; //添加数据窗口,其中包含了一个空值的EmpForm var AddEmpWin; //修改数据窗口,其中包含了一个已赋值的EmpForm var EditEmpWin; //数据源,要显示的列表数据源 var ds ; //显示控件,显示列表的GridPanel控件 var grid; //游戏列表 var dsType; //编辑器 var htmleditor; //函数部分 function GetWebServiceData() ...{ setDsType(); //选择按钮 var sm = new Ext.grid.CheckboxSelectionModel(); //列信息 var cm = new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(...{header:'序号',width:35}),//计算行数,无法映射 sm, ...{header:'游戏名称',dataIndex:'Gname',sortable:true,width:50}, ...{header:'扩展标题',dataIndex:'Etitle',sortable:true,width:100}, ...{header:'扩展内容',dataIndex:'Edesc',sortable:true,width:100}, ...{header:'排序',dataIndex:'Orderid',sortable:true,width:50} ]); //#数据源映射,可修改部分 ds = new Ext.data.Store(...{ proxy: new Ext.data.WCFHttpProxy(...{ url:'/Admin/Wcf/Gameinfosextend.svc/Gameinfosextends' }), reader: new Ext.data.WCFJsonReader(...{ root: 'source',//源映射 totalProperty: 'totalCount',//总页数 id:'Tid'//id值 }, [ //与返回的数据源读取映射,与数据库的表一致 ...{name: 'Gname'},//如果名称一致,可以省略mapping ...{name:'Etitle'}, ...{name:'Edesc'}, ...{name:'Orderid'}, ...{name:'Gameid'} ] ), remoteSort: false }); //配置视图信息 var view=new Ext.grid.GridView(...{forceFit:true,sortAscText :'正序', sortDescText :'倒序'}); view.columnsText='列显示/隐藏'; //分页 var paging = new Ext.PagingToolbar(...{ pageSize: 10,//每页显示数 store: ds, displayInfo: true, displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条', emptyMsg: "没有记录" }); //头部的操作按钮 var operation = [ ...{ text:'添加', tooltip:'添加一条记录', //iconCls:'add', handler:handleAdd }, '-', ...{ text:'修改', tooltip:'修改', //iconCls:'option', handler:handleEdit },'-', ...{ text:'删除', tooltip:'删除记录', //iconCls:'remove', handler:handleDelete },'-',' ','搜索(按游戏名称): ', ' ',new Ext.app.SearchField(...{store:ds,pagebar:paging,width:200,paramName:'search'}) ]; //显示控件 grid = new Ext.grid.EditorGridPanel(...{ el:Ext.getBody(),//显示的位置对象 store: ds,//数据源 sm:sm,//多选按钮组 cm:cm,//列映射 view:view,//视图映射 bbar:paging,//分页 tbar:operation,//头部操作 width:770, height:450 }); grid.render(); ds.load(...{params:...{start:0,limit:paging.pageSize,search:''}}); } function setDsType() ...{ dsType = new Ext.data.Store( ...{ proxy: new Ext.data.WCFHttpProxy(...{url:'/Admin/Wcf/Gameinfos.svc/WCFGridsJson'}), reader: new Ext.data.WCFJsonReader( ...{ root: 'source', id:'Id' }, [ ...{name: 'Id'}, ...{name: 'Gname'} ]) }); dsType.load(...{params:...{GsystemId:0,start:0,limit:10000,key:''}}); } //操作部分 //添加游戏信息 Start function handleAdd()...{ createForm(); AddEmpWin = new Ext.Window(...{ title: '增加游戏分类', layout:'fit', width:770, height:400, plain: true, items:EmpForm, buttons: [...{ text:'保存', handler: AddRecord },...{ text: '取消', handler: function()...{ AddEmpWin.hide(); } }] }); AddEmpWin.show(this); } //保存添加的数据 function AddRecord(btn) ...{ if (EmpForm.form.isValid()) ...{ btn.disabled=true; var formvalue = EmpForm.form.getValues(); var pars =Ext.util.JSON.encode(formvalue); //Ext.MessageBox.alert("提示",formvalues); Ext.Ajax.request(...{ url: 'index.aspx?opr=add', //#可修改成你的方法 method: 'POST', headers:...{"Content-Type":"application/x-www-form-urlencoded;"}, params:pars,//the unique id(s) callback: function (options, success, response) ...{ var res = Ext.util.JSON.decode(response.responseText); if (res.suc) ...{ //success will be true if the request succeeded var alertcontent=ConvertResponseText(response.responseText,"",true,false); AddEmpWin.hide(); Ext.MessageBox.alert("成功",res.mes); } else ...{ AddEmpWin.hide(); Ext.MessageBox.alert("失败",res.mes); } }, //the function to be called upon failure of the request (server script, 404, or 403 errors) failure:function(response,options)...{ AddEmpWin.hide(); Ext.MessageBox.alert("警告","出现异常错误!请联系管理员!"); }, success:function(response,options)...{ ds.reload(); } })// end Ajax request } } //添加游戏信息 End //修改游戏信息 Start function handleEdit()...{ createForm(); var selectedKeys = grid.selModel.selections.keys; //returns array of selected rows ids only,读选择了的数据数组 if(selectedKeys.length != 1) ...{ Ext.MessageBox.alert('提示','请选择一条记录!'); } else ...{ EditEmpWin = new Ext.Window(...{ title: '修改游戏资料', layout:'fit', width:770, height:400, plain: true, items:EmpForm, buttons: [...{ text:'保存', handler: UpdateRecord },...{ text: '取消', handler: function()...{ EditEmpWin.hide(); } }] }); EditEmpWin.show(this); var request = ...{empid:selectedKeys[0]}; Ext.Ajax.request(...{ url: '/Admin/Wcf/Gameinfosextend.svc/GetGameinfosextend', //#可修改成你的方法,带ID参数 method: 'POST', params:Ext.util.JSON.encode(request),//the unique id(s) callback: function (options, success, response) ...{ if (success) ...{ //success will be true if the request succeeded var formvalue =Ext.WS.getJson(response); formvalue = formvalue.source;//这里返回的对象为与root映射的对象一致, 例如:如果列中映射为gname,则formvalue.gname就是它的值 EmpForm.form.setValues(formvalue); } else ...{ //Ext.MessageBox.alert("失败","已有此游戏的指南"); } }, //the function to be called upon failure of the request (server script, 404, or 403 errors) failure:function(response,options)...{ Ext.MessageBox.alert("警告","出现异常错误!请联系管理员!"); }, success:function(response,options)...{ } })// end Ajax request } } function UpdateRecord(btn) ...{ if (EmpForm.form.isValid()) ...{ btn.disabled=true; var formvalue = EmpForm.form.getValues(); var pars =Ext.util.JSON.encode(formvalue); //var request = {emp:Ext.util.JSON.encode(ConvertFormValue(formvalue,''))};//如果有参数的类型为时间,则添入第二个参数中,多个用","号隔开 //Ext.MessageBox.alert("提示",formvalues); //request = Ext.util.JSON.encode(request); Ext.Ajax.request(...{ //url: '/Admin/Wcf/Gameinfosextend.svc/UpdateGameinfosextend', //#可修改成你的方法 url:"index.aspx?opr=update", method: 'POST', //params:pars,//the unique id(s) headers:...{"Content-Type":"application/x-www-form-urlencoded;"}, params:pars, callback: function (options, success, response) ...{ var res = Ext.util.JSON.decode(response.responseText); if (res.suc) ...{ //success will be true if the request succeeded var alertcontent=ConvertResponseText(response.responseText,"",true,false); Ext.MessageBox.alert("成功",res.mes); EditEmpWin.hide(); } else ...{ EditEmpWin.hide(); Ext.MessageBox.alert("失败",res.mes); } }, //the function to be called upon failure of the request (server script, 404, or 403 errors) failure:function(response,options)...{ EditEmpWin.hide(); Ext.MessageBox.alert("警告","出现异常错误!请联系管理员!"); }, success:function(response,options)...{ ds.reload(); } })// end Ajax request } } //修改游戏信息 End //删除游戏信息 Start function handleDelete()...{ var selectedKeys = grid.selModel.selections.keys; //returns array of selected rows ids only if(selectedKeys.length > 0) ...{ Ext.MessageBox.confirm('提示','您确实要删除选定的记录吗?', deleteRecord); } else ...{ Ext.MessageBox.alert('提示','请至少选择一条记录!'); }//end } function deleteRecord(btn)...{ if(btn=='yes')...{ var selectedRows = grid.selModel.selections.items;//returns record objects for selected rows (all info for row) var selectedKeys = grid.selModel.selections.keys; Ext.Ajax.request(...{ url: '/Admin/Wcf/Gameinfosextend.svc/DelGameinfosextend', //#可修改成你的方法 method: 'POST', params:Ext.util.JSON.encode(selectedKeys),//the unique id(s) callback: function (options, success, response) ...{ if (success) ...{ //success will be true if the request succeeded var alertcontent=ConvertResponseText(response.responseText,"",false,false); Ext.MessageBox.alert("成功",alertcontent); } else ...{ //Ext.MessageBox.alert("失败,请重试",response.responseText); } }, //the function to be called upon failure of the request (server script, 404, or 403 errors) failure:function(response,options)...{ ReturnValue = Ext.MessageBox.alert("警告","出现异常错误!请联系管理员!"); }, success:function(response,options)...{ ds.reload(); } })// end Ajax request }//end if click 'yes' on button } // end deleteRecord //删除游戏信息 End //#表单映射,可修改部分 function createForm() ...{ Ext.QuickTips.init(); htmleditor=new Ext.form.HtmlEditor( ...{ fieldLabel: '内容', name: 'Edesc', allowBlank:false, width:550, height:200 }); //创建单个游戏信息表单 EmpForm = new Ext.FormPanel(...{ frame: true, labelAlign: 'right', labelWidth: 120, width:770, height:400, //头信息 items: [ new Ext.form.FieldSet(...{ title: '游戏资料分类信息表', autoHeight: true, defaultType: 'textfield', items: [ //隐藏字段 new Ext.form.Hidden(...{ name: 'Tid', value:0 }), new Ext.form.ComboBox( ...{ width:200, fieldLabel: '游戏名称', hiddenName:'Gameid', store:dsType, valueField:'Id', displayField:'Gname', mode: 'local', triggerAction: 'all', allowBlank:false }), ...{ fieldLabel:"标题", name:'Etitle', allowBlank:false }, //输入框 htmleditor, ...{ fieldLabel:"排序", name:'Orderid', allowBlank:false, value:0 } ] }) ] }); } GetWebServiceData(); //--> </ script > </ body > </ html > 再来看看index.aspx页面的后台代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; // 注意,导入 using CommonHelper; using YouXi.DB; namespace YouXi.Components ... { public class gameinfosextend : System.Web.UI.Page ...{ protected void Page_Load(object sender, EventArgs e) ...{ YouXi.Components.Gameinfos bll = new YouXi.Components.Gameinfos(); YouXiNavigateDataContext db = new YouXiNavigateDataContext(); //这里开始是关键的代码,将传过来的数据流读取到流对象,注意一下编码,在这个例子里是UTF8的 System.IO.StreamReader red = new StreamReader(Request.InputStream, System.Text.Encoding.UTF8/**//*有可能是gb2312*/); //将流中的数据读出来,赋值给字符串 string strContent = red.ReadToEnd(); string opr = string.Empty; bool canUpdate = false; DB.Gameinfosextend game = strContent.DeJSON<DB.Gameinfosextend>(); if (Request.QueryString["opr"] != null) ...{ opr = Request.QueryString["opr"].ToString(); } string message = string.Empty; bool success = false; switch (opr) ...{ case "update": DB.Gameinfosextend h = db.Gameinfosextend.Where(n => n.Gameid == game.Gameid && n.Etitle == game.Etitle).SingleOrDefault(); if (h == null)//修改后的游戏在已有的数据中没有 ...{ canUpdate = true; } else if (h.Gameid == game.Gameid && h.Etitle !=game.Etitle || h.Tid == game.Tid )//修改后的游戏在已有的数据中有,且是同一条数据 ...{ canUpdate = true; } if (canUpdate) ...{ var m = db.Gameinfosextend.Single(n => n.Tid == game.Tid); int ogid = m.Gameid; m.Etitle = game.Etitle; m.Edesc = game.Edesc.targetLink(); m.Gameid = game.Gameid; m.Orderid = game.Orderid; if (m.Edesc.Trim().Length >= 5) ...{ db.SubmitChanges(); if (ogid != m.Gameid) ...{ message = bll.MadeGameHTML(ogid); } message = message + bll.MadeGameHTML(m.Gameid); success = true; } else ...{ message = "内容至少五个字符!"; } } else ...{ message = "已有此游戏的扩展标题!"; } break; case "add": db.Gameinfosextend.InsertOnSubmit(game); if (db.Gameinfosextend.Where(n => n.Gameid == game.Gameid && n.Etitle == game.Etitle).SingleOrDefault() == null) ...{ if (game.Edesc.Trim().Length >= 5) ...{ game.Createtime = DateTime.Now; db.SubmitChanges(); message = bll.MadeGameHTML(game.Gameid); success = true; } else ...{ success = false; message = "内容至少五个字符!"; } } else ...{ success = false; message = "已有此游戏的扩展标题!"; } break; default: message = "未添加任何数据!"; break; } var json = new ...{ suc = success, mes = message.ToLower().Replace("<a", "<a style='color:Red;text-decoration:underline;'") }; Response.Write(json.ToJSON()); Response.Flush(); } }}