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後面都有逗號,因此這兩句就不用額外加了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章