checkbox批量操作
1.用JS实现的
页面效果图:
aspx代码:
JS代码:
页面效果:
aspx代码:
JS代码:
function batchClick(selectObj) { //selectObj保存的是所选择的的对象的集合
var count = selectObj.length;
// 验证用户用没有选中值
if (count <= 0) {
alert('请选择您要处理的事项!');
return false;
}
// 先取第一个数值,然后再将后面的和第一个比
var caseIdList = "";
var fristAppCode = $(selectObj[0]).attr("appCode");
var fristTaskID = $(selectObj[0]).attr("taskID");
var fristActivity = $(selectObj[0]).attr("currentActivity");
for (var i = 0; i < count; i++) {
// 应用ID,任务ID,当前步骤 这三个是需要比较的
var tmpApp = $(selectObj[i]).attr("appCode");
var tmpTask = $(selectObj[i]).attr("taskID");
var tmpActivity = $(selectObj[i]).attr("currentActivity");
if (fristAppCode != tmpApp || fristTaskID != tmpTask || fristActivity != tmpActivity) {
alert('批处理条件不成立!请选择相同的流程步骤!');
return false;
}
// 流程ID不参与判断,但要传值过去
caseIdList += $(selectObj[i]).attr("caseID") + ","; //以逗号分隔caseID
}
// 给全局变量赋值,因为在Ajax请求后还会调用到
caseIdList = caseIdList.substring(0, caseIdList.length - 1); //去掉最后一个逗号
appCode = fristAppCode;
caseID = caseIdList;
taskID = fristTaskID;
currentActivity = currentActivity;
// 提交请求
SubmitRequest();
}
// 提交请求
function SubmitRequest() {
var caseIDArray = caseID.split(",");
ajaxGet("./Service/WorkflowAjaxHandler.ashx",
{
funcName: "CheckModalType",
appCode: appCode,
caseID: caseIDArray[0],
taskID: taskID
},
onCheckModalTypeSuccessed // 请求回调事件
);
return false;
}
处理请求的Ashx:
public class WorkflowAjaxHandler : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
string funcName = context.Request.Params["funcName"];
context.Response.ContentType = "text/plain";
switch (funcName)
{
case "GetAllBackActivity":
{
int appCode = Convert.ToInt32(context.Request.Params["appCode"]);
string caseID = context.Request.Params["caseID"];
int taskID = Convert.ToInt32(context.Request.Params["taskID"]);
WorkflowService svc = new WorkflowService();
string result = svc.GetAllBackActivity(appCode, caseID, taskID);
context.Response.Write(result); //一般处理程序是通过这种方式输出结果
break;
}
case "CheckModalType":
{
int appCode = Convert.ToInt32(context.Request.Params["appCode"]);
string caseID = context.Request.Params["caseID"];
int taskID = Convert.ToInt32(context.Request.Params["taskID"]);
WorkflowService svc = new WorkflowService();
try
{
byte result = svc.CheckModalType(appCode, caseID, taskID);
context.Response.Write(result); //一般处理程序是通过这种方式输出结果
}
catch (Exception ex)
{
string msg = ex.Message;
if (ex.Message.Contains("不存在"))
{
msg += ",请重新申请流程!";
}
context.Response.Write(msg); //一般处理程序是通过这种方式输出结果
}
break;
}
}
}
public bool IsReusable
{
get
{
return true;
}
}
}
2.KIssU自带的
页面效果图
aspx页面代码:
JS代码:
//用来提醒
function delRoles() {
var oSmartGridView1 = document.getElementById("<%=SmartGridView1.ClientID%>");
var sValues = oSmartGridView1.control.getCheckedValues(true);
if (sValues && sValues.length > 0) {
return confirm('您确认要删除吗?');
}
alert("请您选择要删除的角色!");
return false;
}
CS代码:
protected void DelRoles(object sender, EventArgs e)
{
String[] roles = SmartGridView1.GetCheckedValues();
this.RoleService.DeleteRoles(roles);
this.GridSearch.Refresh();
}
DAL:
/// <summary>
/// 批量删除角色
/// </summary>
/// <param name="roleIds">角色Id的数组</param>
public void DeleteRoles(string[] roleIds)
{
using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.Required))
{
IDictionary<string, object> dictionary = new Dictionary<string, object>();
foreach (string roleId in roleIds)
{
dictionary["RoleId"] = roleId;
dao.ExecuteNonQuery("role.deleteUserRoleByRoleId", dictionary);
dao.ExecuteNonQuery("role.deleteRolePermission", dictionary);
dao.ExecuteNonQuery("role.delete.role", dictionary);
}
transactionScope.Complete();
}
}