Asp.Net MVC4 列表批量操作js文本实现

一、想要实现这样的操作

  

1、分布视图页面_NewList(这里用的是异步加载数据):

  @using Webdiyer.WebControls.Mvc;
  @model PagedList<Domain.Entities.Finance>

  <div class="list">
    <div class="datelist clearfix">
      <table class="table" cellpadding="0" cellspacing="0">
        <tr>

        <th width="30" style="border-radius: 10px 0px 0px;"><input id="SelectAll" type="checkbox" /></th>
        <th width="275">项目名称</th>
        <th width="75">类型</th>
        <th width="50">金额</th>
        <th width="50">报销单</th>
        <th width="30">是否报销</th>
        <th width="50">添加人</th>
        <th width="140">添加时间</th>
        <th width="170" style="border-radius: 0px 10px 0px 0px;">操作</th>
        </tr>
      @if (Model != null)
      {
        foreach (var item in Model)
        {<tr ><td><input value="@item.Id"  data-adminId="@item.Admin_Id"  data-p="@item.State" type="checkbox"/></td>

            <td>@item.Name</td>

            <td>@(item.Type==2:"收入":"支出")</td>
            <td>@item.Money</td>

            <td>@(item.PayUrl!=null:"有":"无")</td>

            <td>@(item.IsPay==1:"是":"否")</td>
          @if (ViewBag.AdminList!= null){
            if (item.AdminId!= null)
            {
              foreach (Domain.Entities.Admin admin in ViewBag.AdminList)
              {
                if (item.AdminId == admin.Id)
                {<td>@admin.Name</td>}

              }

            }

            else{ <td></td>}}else{ <td></td>}

            <td>@item.Add_Date</td>
            <td><a data-id="@item.Id" style="cursor: pointer;" ruleId="Finance/Update" id="Update">修改</a>

               <a data-id="@item.Id" style="cursor: pointer;" ruleId="Finance/ThoughtPay" id="ThoughtPay">报销</a>

              <a data-id="@item.Id" style="cursor:pointer;" ruleId="Finance/Del" id="Del">删除</a>

            </td>

            </tr> }}

        </table>
      </div>
    </div>
    <div class="tital_bar">
      <div class="operateAndPagin clearfix"> 
        <p class="o_lt">
          <a id="BatchDeleteItem" ruleid="Finance/BatchDeleteItem" class="btn btn32_cnt">批量删除</a>
          <a id="BatchPay"ruleid="Finance/BatchPay" class="btn btn32_cnt">批量报销</a>
          <a id="CancelBatchPay" ruleid="Finance/CancelBatchPay" class="btn btn32_cnt">批量取消报销</a>
        </p>
        <div class="Pagination">
        @Ajax.Pager(Model, new PagerOptions
        {
          PageIndexParameterName = "pageIndex",
          ShowPageIndexBox = true,
          PageIndexBoxType = PageIndexBoxType.DropDownList,
          NumericPagerItemCount = 3,
          CurrentPagerItemWrapperFormatString = "<span class=‘current‘><a data-pageindex={0} href=‘/Finance/FinanceList?pageIndex={0}‘>{0}</a></span>",
          ShowGoButton = false
         },
         new MvcAjaxOptions
         {
          UpdateTargetId = "datas",
          HttpMethod = "Post",
          DataFormId = "searchForm",
         }, new { id = "diggpager" })
          <div class="clear"></div>
         </div>
        </div>
      </div>

   2、在视图中FinanceList:

      <script src="@Url.Content("~/Scripts/js/jquery-1.8.2.min.js")" type="text/javascript"></script>    

    <script src="../../Scripts/js/Finance.js" type="text/javascript"></script>    

    <script type="text/javascript">
      $(function () {
        window.Finance.Init();
      });
    </script>

  3、在Finance.js中:  

    (function () {
        var Finance= {
           Init: function () {
                  $("#SelectAll").live("click", this.SelectAll);
                  $("#BatchDeleteItem").live("click", this.BatchDeleteItem); //批量删除
                  $("#BatchPay").live("click", this.BatchPay); //批量报销
                  $("#CancelBatchPay").live("click", this.CancelBatchPay); //批量取消报销
                  $("#Del").live("click", this.Del); //删除
                  $("#Update").live("click", this.Update); //修改
                  $("#ThoughtPay").live("click", this.ThoughtPay); //报销
                  $(document).ajaxSuccess(function (event, xhr, settings) {
                      $(".datelist").find("table tr:even").addClass("bgcolor");
                  });
            },
            SelectAll: function () {
              if ($(this).is(":checked")) {
                $(".datelist :checkbox").attr("checked", true);
              } else {
                $(".datelist :checkbox").removeAttr("checked");
              }
            },
            Del: function () {
              var id = $(this).attr("data-id");
              if (!confirm("确定要删除该信息吗?")) { return false; }
              $.ajax({
                type: "POST",
                url: "/Finance/Del",
                data: { "Id": id },
                dataType: "json",
                success: function (data) {
                    if (data.Is_Success) {
                      location.href = "/Finance/FinanceList";
                    }else {alert(data.Message);}

                }
               });
           },
            Update: function () {
            var id = $(this).attr("data-id");
            if (!confirm("确定要修改信息吗?")) { return false; }
            $.ajax({
                type: "POST",
                url: "/Finance/Update",
                data: { "Id": id },
                dataType: "json",
                success: function (data) {
                    if (data.Is_Success) {
                      location.href = "/Finance/FinanceList.html";
                    }else {
 alert(data.Message);}

                }
            });
          },
          ThoughtPay: function () {
              var id = $(this).attr("data-id");
              if (!confirm("确定要报销信息吗?")) { return false; }
              $.ajax({
                type: "POST",
                url: "/Finance/ThoughtPay",
                data: { "Id": id },
                dataType: "json",
                success: function (data) {
                    if (data.Is_Success) {
                        location.href = "/Finance/FinanceList";
                    }else { alert(data.Message); }
                }
              });
            },
           

            BatchDeleteItem: function () {
                var re = true;
                var ids = GetCheckedId();
                if (!ids) { alert("请选择要删除的信息!"); return false; }
                if (!confirm("确定要删除选中项吗?")) { return false; }
                var adminId = $("#adminId").val();
                var adminIds = "";
                $(".datelist :checked").each(function () {
                    var admin = $(this).attr(‘data-adminId‘);
                    var state = $(this).attr(‘data-p‘);
                    if (admin != adminId || state == 1) {
                      re = false;
                    }

                });
                if (!re) {
                  alert("不能批量删除非当前用户或者已报销信息,批量删除失败!");
                  return false;
                }

                $.ajax({
                  type: "POST",
                  url: "/Finance/BatchDeleteItem.html",
                  data: { "Ids": ids },
                  success: function (data) {
                    if (data.Is_Success) {
                      location.href = "/Finance/FinanceList.html";
                    }
                    else { alert(data.Message); }
                   }
                  });
                },

                BatchPay: function () {
                    var states = GetCheckedData("data-s");
                    var ids = GetCheckedId();
                    if (!confirm("确定要报销选中的信息吗?")) { return false; }

                    $.ajax({
                        type: "POST",
                        url: "/Finance/BatchPay",
                        data: { "ids": ids },
                        dataType: "json",
                        success: function (data) {
                          if (data.Is_Success) {
                            location.href = "/Finance/FinanceList.html";
                          }else { alert(data.Message); }
                        }
                    });
                },
                CancelBatchPay: function () {
                    var states = GetCheckedData("data-s");
                    var ids = GetCheckedId();
                    if (!confirm("确定要取消报销选中的信息吗?")) { return false; }

                    $.ajax({
                        type: "POST",
                        url: "/Finance/CancelBatchPay.html",
                        data: { "ids": ids },
                        dataType: "json",
                        success: function (data) {
                          if (data.Is_Success) {
                              location.href = "/Finance/FinanceList.html";
                          }else { alert(data.Message); }
                        }
                    });
                }            
          

 

          window.Finance= Finance;
          function GetCheckedId() {
            var ids = $(".datelist :checked").map(function () {
              if ($(this).attr("id") == "SelectAll") {
                return "";
              }
              return $(this).val();
            }).get().join(",");
          return ids;
          };

          function GetCheckedData(data) {
            var ids = $(".datelist :checked").map(function () {
              if ($(this).attr("id") == "SelectAll") {
                return "";
              }
              return $(this).attr(data);
            }).get().join(",");
            return ids;
         };
    })();

  4、Controller中(以批量删除为例子)  

    [AuthorizationFilter]
    public ActionResult BatchDeleteItem(string Ids)
    {
      Finance newsModel = new Finance();
      if (Ids.IndexOf(‘,‘) == 0)
      {
        Ids = Ids.Remove(0, 1);
      }
      int result = FinanceClient.FinancesListState(AdminId,Ids,0);
      if (result > 0)
      {
        return Json(new { Is_Success = true, Message = "批量删除信息成功!" });
      }
      else if(result==-2)
      {
        return Json(new { Is_Success = false, Message = "批量删除的信息中有已报销信息,批量删除失败!" });
      }
      else if (result == -3)
      {
        return Json(new { Is_Success = false, Message = "不能批量删除非当前用户的财务信息,批量删除失败!" });
      }
      return Json(new { Is_Success = false, Message = "批量删除信息失败!"});
    }

  其中对于后台错误信息可以返回Content,例如:

  return Content("<script> alert(‘获得数据失败!‘);window.location=‘/Home/FinanceList.html‘</script>");
  return Content("<script> alert(‘获得数据失败!‘);history.back()</script>");

时间: 2024-10-14 00:39:25

Asp.Net MVC4 列表批量操作js文本实现的相关文章

ASP.NET MVC4 使用UEditor富文本

原帖:http://user.qzone.qq.com/369175376/infocenter?ptlang=2052 第一步:先到http://ueditor.baidu.com/website/download.html去下载 第二步:把下载的文件改成ueditor名称,添加到Content文件夹里面 第三步:在ueditor文件夹下面的net文件夹创建一个upload文件夹装上传的图片第四步:找到net文件夹里面的config.json文件,在找到所有的 /* 图片访问路径前缀 */ 然

ASP.NET MVC4中用 BundleCollection

来源:http://www.cnblogs.com/madyina/p/3702314.html ASP.NET MVC4中对JS和CSS的引用又做了一次变化,在MVC3中我们这样引用资源文件: <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 将在运行的时候自动将虚拟(相对)路径转换为应用程序绝对

ASP.NET MVC4中用 BundleCollection使用问题手记

ASP.NET MVC4中对JS和CSS的引用又做了一次变化,在MVC3中我们这样引用资源文件: <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 将在运行的时候自动将虚拟(相对)路径转换为应用程序绝对路径.这是比较传统的引用方式,尽管他做了一次转换操作,对服务器的请求数量压力并没有什么改进的变化,

ASP.net MVC4 View设置Html代码显示为文本字符问题

问题描述: 在ASP.net MVC4 框架下,在后台ViewBag上设置连接属性 ViewBag.link = "<a href='/'>"+DisplayName+"</a>"; 前台输出时使用 <span>@ViewBag.link</span> 页面上显示的内容变成了 <a href='/'>"+DisplayName+"</a> 没有做成链接. 修改方法: 前台输出

4、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——后台管理界面

这一章节比较简单,我就直接贴代码了,后台管理登陆界面如下: 对应的控制器HomeController.cs,代码如下: using YKT.Model; using YKT.Common; using YKT.BLL; using YKT.Common.HtmlHelpers; using YKT.Common.Functions; using Microsoft.Practices.Unity; using YKT.IBLL; namespace YKT.Controllers { publi

ASP.NET MVC4中调用WEB API的四个方法

http://tech.it168.com/a2012/0606/1357/000001357231_all.shtml [IT168技术]当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各种客户端去使用服务已经是十分普遍的做法.就.NET而言,目前提供了Remoting,WebService和WCF服务,这都能开发出功能十分强大的服务.然而,越来越多的互联网应用,希望将服务只是通过HTTP发布出去,而不是使用复杂的SOAP协议.为了解决这个问题,ASP.NET WebAPI就出现了.

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请 系列目录 创建新表单之后,我们就可以起草申请了,申请按照严格的表单步骤和分支执行. 起草的同时,我们分解流转的规则中的审批人并保存,具体流程如下 接下来创建DrafContoller控制器,此控制器只有2个页面,一个Create(起草页面)Index(表单列表) 表单列表显示个人想法,我是根据分类直接获取其下表单,即Flow_Type下的Flow_Form public

Asp.Net MVC4开发三:HTML5、CSS3、JQuery、JQuery UI的应用

在Asp.Net MVC4里面UI层也就是View层默认使用HTML5以及与HTML相对应的CSS3,JS默认使用JQuery和JQuery UI.新建一个MVC4项目,项目会自动包含JQuery.JQuery UI所需要的文件及智能提示支持; HTML则是自动生成HTML5格式标签的页面. 先来看看MVC4项目里面对这些内容的支持: 在MVC4项目里面有Scripts和Content两个文件夹,Scripts里面存放Java scripts库包括JQuery, JQuery UI, JQuer

在ASP.NET MVC4中实现同页面增删改查,无弹出框02,增删改查界面设计

在上一篇"在ASP.NET MVC4中实现同页面增删改查,无弹出框01,Repository的搭建"中,已经搭建好了Repository层,本篇就剩下增删改查的界面了......今天的阳光真特么好,写完本篇,好出去在阳光下溜溜狗.散散步什么的,正所谓文武之道一张一弛,走神了,进入正题. 首先是一个View Model,在这里定义验证规则,提交和保存数据的时候还必须和领域模型映射. using System; using System.ComponentModel.DataAnnotat