上接ExtJS与.NET结合开发实例(Grid之数据显示、分页、排序篇),在此基础上实现批量删除功能。 ?????实现的步骤如下: ???? 1. 用WebService实现删除的功能(上篇有一园友提出用WebService实现,这里顺便说一下,取数据源也可以用WebService,大家可以参考删除的WebService自行实现,我这里就不在累述了) ??????? 新建一WebService文件,命名为:DeleteProject.asmx ??????? 代码如下:

 DeleteProject.asmx.cs
?1 using?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
?1
 function?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 ?
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|