C#+DevExpress 使用GridControl多选一次批量更新数据状态(代码)

前端获取选择了哪些数据行对应的id值,DEV表格控件选择时直接按住ctrl或shift键之后即可多选,当然需要设置一下表格允许多选奥。

        /// <summary>
        /// 生成选中行id数组
        /// 2019-6-6
        /// </summary>
        private string[] GetSelectRowsIdArray(DevExpress.XtraGrid.Views.Grid.GridView gv, string idCoumnName)
        {
            List<int> selectedRows = gv.GetSelectedRows().Where((t) => t >= 0).ToList();
            string[] idArray = { "", selectedRows.Count.ToString()};

            foreach (int i in selectedRows)
            {
                string idStr = gv.GetRowCellValue(i, idCoumnName).ToString();
                idArray[0] += idStr + ",";
            }
          //  idArray[0] = idArray[0].Substring(0, idArray[0].Length - 1);

            return idArray;
        }

这里获取选中行id值,并组成“1,2,3,5,”这样的字符串,一开始想着这样先把最后的逗号去掉传到存储过程直接就能一次处理多条记录,但是实践了一下这样传过去的字符串是不能直接在sql里用in()这种方式使用的。

因此上面的代码里把最后取消最后一个逗号的那句注释掉,后面会用到的。

存储过程:

ALTER PROCEDURE [dbo].[BasisPriceNew_DepositPayConfirm]
		@ID varchar(300)

 AS 
 	Begin Tran;
	Declare @errors int        --错误数
	Set @errors =0;


    DECLARE @PointerPrev int 
    DECLARE @PointerCurr int 
    DECLARE @TId int 
    Set @PointerPrev=1 
     
    while (@PointerPrev < LEN(@ID)) 
    Begin 
        Set @PointerCurr=CharIndex(',',@ID,@PointerPrev) 
        if(@PointerCurr>0) 
			Begin 
				set @TId=cast(SUBSTRING(@ID,@PointerPrev,@PointerCurr-@PointerPrev) as int) 
				UPDATE BasisPriceNew SET  ifDelete=1 where ID=@TID 
				SET @PointerPrev = @PointerCurr+1 
			End 
        else 
            Break 
    End 
     --删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除 
     --set @TId=cast(SUBSTRING(@ID,@PointerPrev,LEN(@ID)-@PointerPrev+1) as int) 
     --Delete from News where ID=@TID 

	
	if  @errors<>0  --判断修改数据有没有出错   
		begin	--如果出错  
           rollback tran				-- 回滚事务
            
			Select 'ERROR',0,'CONFIRMDEPOSIT-PRICING-ERROR', '批量删除失败';
		end    
    else		--没有出错 
         begin
			commit  tran				--提交事务  

			Select 'OK',0,'CONFIRMDEPOSIT-PRICING-OK', '批量删除成功';
	end

中间有两句是原来的程序,因为前面字符串传来的每个id后面都有逗号,因此这两句就不用额外加了。

展开阅读全文
©️2020 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值