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后面都有逗号,因此这两句就不用额外加了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞鱼通达二开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值