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


@H_
502[email protected]
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.con
fig文件中的
<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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。