上接ExtJS与.NET结合开发实例(Grid之数据显示、分页、排序篇),在此基础上实现批量删除功能。 ?????实现的步骤如下: ???? 1. 用WebService实现删除的功能(上篇有一园友提出用WebService实现,这里顺便说一下,取数据源也可以用WebService,大家可以参考删除的WebService自行实现,我这里就不在累述了) ??????? 新建一WebService文件,命名为:DeleteProject.asmx ??????? 代码如下:
DeleteProject.asmx.cs
?1using?System; ?2?System.Data; ?3?System.Linq; ?4?System.Web; ?5?System.Collections; ?6?System.Web.Services; ?7?System.Web.Services.Protocols; ?8?System.ComponentModel; ?9?System.Xml.Linq; 10?BusinessObject.Projects;?//dbml文件的引用 11?Database; 12namespace?Web.Projects.OperProjects 13{ 14????/**////?<summary>15?????Summary?description?for?DeleteProject 16????</summary> 17????[WebService(Namespace?=?"http://tempuri.org/)] 18????[WebServiceBinding(ConformsTo??WsiProfiles.BasicProfile1_1)] 19????[ToolboxItem(false20?????To?allow?this?Web?Service?to?be?called?from?script,?using?ASP.NET?AJAX,?uncomment?the?following?line.? 21?[System.Web.Script.Services.ScriptService]22????publicclass?DeleteProject?:?System.Web.Services.WebService 23????24 25????????[WebMethod] 26????????bool?DelProject(string?strProjects)????这里需要返回删除是否成功给ExtJS调用27????????28?????????????result?; 29try30????????????31????????????????ProjectBaseInfoDataContext?db?new?ProjectBaseInfoDataContext(); 32????????????????var?projects??from?p?in?db.PROJECT_BASE_INFOs 33???????????????????????????????where?strProjects.IndexOf(p.PROJECT_NO)?>034???????????????????????????????select?p; 35????????????????db.PROJECT_BASE_INFOs.DeleteAllOnSubmit(projects); 36????????????????result?true37????????????}38????????????catch?39404142return?result; 43????????}44????}45}46
???? 2.让我们再回到第一篇里的GridForProjectLists.js文件里,在代码最后部分找到
????????????id:'btnDel', ????????????text:'批量删除', ????????????tooltip:'删除', ????????????iconCls:'remove', ????????????handler:showDelDialog
??? 修改handler:showDelDialog为hanlder:doDel ????现在实现doDel这个function:
doDel
?1function?doDel()????????Ext.MessageBox.confirm('提示',?'确实要删除所选的记录吗?',showResult); ????}?? ?????showResult(btn)?????????if(btn=='yes')??????????var?rowgdProjects.getSelections(); ?jsonData""??????????for(?i,lenrow.length;i<len;i++)?ss??row[i].get(PROJECT_NO); (i) ??????????????jsonData??jsonData?+?ss;????????这样处理是为了删除的Lambda语句方便????????????else?ss;?????????????}alert(jsonData);???????????conn??Ext.data.Connection(); 17??????????conn.request(????????????url:../Projects/OperProjects/DeleteProject.asmx/DelProject//请注意引用的路径 ????????????params:{strProjects:jsonData}????????????method:?'post',0);">????????????scope:?this????????????callback:(options,success,?response){? ???????????(success){??? ??????????????Ext.MessageBox.alert(提示所选记录成功删除!??????????????ds.load({params:{start:25});????? ???? ????? ????????????????{Ext.MessageBox.alert(所选记录删除失败!);}??????????}?????????};
????以上代码加在gdProjects定义之后即可。
??? 实现效果如下: ???
至此已实现Grid的批量删除功能。 ???? 后记: ?????由于从VS2008 Beta2转到了RTM版(俺得跟着大家一起走呀 ),原先的代码略有改动,主要体现在两处: ?????(1)Web.config文件中的 ? ?????? <add assembly="System.Data.DataSetExtensions,Version=3.5.0.0,Culture=neutral,PublicKeyToken=B77A5C561934E089"/> ?????? 版本号在beta里是2.0.0.0,现为3.5.0.0 ???? (2)LINQ的变化,原先的删除使用RemoveAll+SubmitChange的方式,现在为DeleteAllOnSubmit ?
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|