• vue axios 批量删除 数组参数


    方法一:前端循环请求服务器端delete(id)方法

     请问如何获得element-ui表格中的勾选项index,以实现批量删除功能

    https://segmentfault.com/q/1010000012759131

    方法二:传递 string类型字符串。例如: '1,2,3,4'

    ids =[1,2,3,4]

    url: '/investigator/submitAll/' + ids,
    method: 'post'

    服务器端接收到: string类型字符串 '1,2,3,4' ,然后string转int。

    转换方法:

     var tstr = msgsnew.join(',');    //数组转字符串
     console.log("tstr", tstr);
     var tstrtwo = msgsnew.toString();       //数组转字符串
    var tarra = tstr.split(',');    //字符串转数组

    方法三:直接传递数组类型(网上案例均尝试失败)

    axios传递数组参数爬坑总结

    https://www.jianshu.com/p/68d81da4e1ad 

    参数:ids=1&ids=2&ids=3 

    博客主的这个案例成功了,但不知为何,我没有尝试成功!

    2 axios向后台传递数组作为参数

    https://blog.csdn.net/u012317188/article/details/79752096

    JSON.stringify(ids)

    服务器端收到的是string类型的 ‘[1,2,3,4]’

    综上我采用了 方法二。

     (如果有人尝试直接传递数组成功了,请一定留言!)

    实现 : elementUI  table 的 多选 :

    http://element-cn.eleme.io/#/zh-CN/component/table

    代码摘要:

        <el-button style="margin:0 0 0 20px;" type="primary" @click="toggleSelection(list)">反选</el-button>
              <el-button style="margin:0 0 0 20px;" type="primary" @click="submitAllSelection()">批量提交</el-button>
    
     <el-table
          ref="multipleTable"
          @selection-change="handleSelectionChange">
          <el-table-column
            type="selection"
            width="55"/>
    
    
      data() {
        return {
          multipleSelection: []
         }
       }
    methods: {
        toggleSelection(rows) {
          // console.log('rows', rows)
          // console.log('multipleTable-start', this.$refs.multipleTable) //table对象
          // this.$refs.multipleTable.toggleAllSelection(rows) //全选或全不选
          if (rows) {
            rows.forEach(row => {
              this.$refs.multipleTable.toggleRowSelection(row)// 反选
            })
          } else {
            // this.$refs.multipleTable.clearSelection() //清除选中
          }
        },
        handleSelectionChange(val) {
          this.multipleSelection = val  //当前选中行的数据
        },
        submitAllSelection() {
          if (this.multipleSelection.length > 0) {
            this.$confirm('此操作将提交选中项, 是否继续?', '提示', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              type: 'warning'
            }).then(() => {
              const idList = []
              for (const v of this.multipleSelection) {
                idList.push(v.DataSourceID)
              }
              this.submitAll(idList)
            }).catch(() => {
              this.$notify({
                title: '提示',
                message: '已取消批量提交',
                type: 'info',
                duration: 2000
              })
            })
          } else {
            this.$notify({
              title: '提示',
              message: '请勾选要提交的项!',
              type: 'warning',
              duration: 2000
            })
          }
        },
        submitAll(idList) {
          // const idList = JSON.stringify(ids)
          // console.log('idList', idList)
          submitAll(idList).then((response) => {
            if (response.success) {
              console.log('response', response.data)
              for (const v of this.multipleSelection) {
                const index = this.list.indexOf(v)
                this.list[index].HasSubmitted = true
              }
              this.$notify({
                title: '成功',
                message: '批量提交成功',
                type: 'success',
                duration: 2000
              })
            } else {
              this.$notify({
                title: '失败',
                message: '批量提交失败',
                type: 'danger',
                duration: 3000
              })
            }
          })
        }
    }
    
    
    export function submitAll(idList) {
      return request({
        url: '/investigator/submitAll/' + idList,
        method: 'post'
      })
    }
    
    根据axios 封装出request 以简化请求。
    

      

     

    C# webapi控制器

            /// <summary>
            /// 批量提交
            /// </summary>
            /// <param name="ids"></param>
            /// <returns></returns>
            [HttpPost]
            [Route("SubmitAll/{idList}")]
            public ApiResult SubmitAll(string idList)
            {
                var result = new ApiResult();
                result.success = false;
    
                if (!String.IsNullOrEmpty(idList) && !String.IsNullOrEmpty(idList.Trim()))
                {
                    string[] strArray = idList.Split(',');
                    if (strArray.Length > 0)
                    {
                        int[] ids = new int[] { };
                        ids = Array.ConvertAll<string, int>(strArray, s => int.Parse(s));
                        var num = manage.SubmitAll(ids, User.Identity.GetUserId<int>());
                        result.success = true;
                        result.data = num;
                    }
    
                }
    
                return result;
            }
    

      

    // 数据库访问层

            public int SubmitAll(int[] idList, int userId)
            {
                int num = 0;
                using (var pmdb = new ProjectEntities())
                {
                    using (var tran = pmdb.Database.BeginTransaction())
                    {
                        try
                        {
                            var list = pmdb.T_Investigator.Where(d => idList.Contains(d.InvestigatorID) && d.CreateUserID == userId && d.HasSubmitted == false).ToList();
                            if (list.Count > 0)
                            {
                                foreach (var item in list)
                                {
                                    item.HasSubmitted = true;
                                }
                                num = pmdb.SaveChanges();
                                tran.Commit();
                            }
                        }
                        catch (Exception ex)
                        {
                            tran.Rollback();//回滚
                            throw ex;
                        }
                    }
                }
    
                return num;
            }
    

      

  • 相关阅读:
    Eclipse SVN插件设置
    经典语录-每日积累-05
    Shell基础语法,运算符,循环和判断语句和设置启动参数
    iOS-Jenkins自动化打包集成
    App版本升级相关
    Java-数组和集合简单使用
    Java-内部类简单使用
    Callkit被拒
    Java-Finalize(GC)和类与类和接口之间的关系
    经典语录-每日积累-04
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/10308900.html
Copyright © 2020-2023  润新知