上移下移—存储过程

/*****************************   创建存储过程   *******************************/

create PROCEDURE [dbo].[P_Friend_UpDown]
 @IDX INT,   --被选中的行的IDX
 @Flag INT  --移动方向:1表上上移,-1表示下移
AS

Declare @Count int--影响行数
Set @Count=0
Declare @Position int
Set @Position=0
Declare @GuildIDX int
Set @GuildIDX=0
Select @Position=Position,@GuildIDX=GuildIDX From Guild_Friend Where IDX=@IDX
IF(@Position=0)
Begin
 Return -1--没有找到相应记录
End
IF(@Flag=1)--上移
Begin
    Declare @PreIDX INT
 Set @PreIDX=0
 Select @PreIDX=IDX From Guild_Friend Where GuildIDX=@GuildIDX AND Position=@Position-1 AND Flag=1
 IF(@PreIDX=0)--没有找到当前行的前一行,无需上移
 Begin
  Return 0
 End
 Else
 Begin
  BEGIN TRAN
   UPDATE [dbo].[Guild_Friend] SET Position = @Position-1 ,[UpdateTime] = getDate() WHERE [IDX] = @IDX
   SELECT @Count=@@identity
   IF(@Count=0)
   Begin
    ROLLBACK TRANSACTION
    Return -1
   End
   Set @Count=0
   UPDATE [dbo].[Guild_Friend] SET Position = @Position ,[UpdateTime] = getDate() WHERE [IDX] = @PreIDX
   SELECT @Count=@@identity
   IF(@Count=0)
   Begin
    ROLLBACK TRANSACTION
    Return -1
   End
  COMMIT TRANSACTION
  RETURN 0    --执行成功
 End
End
Else--下移
Begin
    Declare @NextIDX INT
 Set @NextIDX=0
 Select @NextIDX=IDX From Guild_Friend Where GuildIDX=@GuildIDX AND Position=@Position+1
 IF(@NextIDX=0)--没有找到当前行的后一行,无需下移
 Begin
  Return 0
 End
 Else
 Begin
  BEGIN TRAN
   UPDATE [dbo].[Guild_Friend] SET Position = @Position+1 ,[UpdateTime] = getDate() WHERE [IDX] = @IDX
   SELECT @Count=@@identity
   IF(@Count=0)
   Begin
    ROLLBACK TRANSACTION
    Return -1
   End
   Set @Count=0
   UPDATE [dbo].[Guild_Friend] SET Position = @Position ,[UpdateTime] = getDate() WHERE [IDX] = @NextIDX
   SELECT @Count=@@identity
   IF(@Count=0)
   Begin
    ROLLBACK TRANSACTION
    Return -1
   End
  COMMIT TRANSACTION
  RETURN 0    --执行成功
 End
End

RETURN 0

 

 

/*************************    创建函数,调用存储过程    ***************************/

public static int UpDown( System.Int32? idx, System.Int32? flag)
        {
            using (FriendTableAdapter adpt = new FriendTableAdapter())
            {
                int rValue = adpt.P_Friend_UpDown(  idx,  flag);
    
    return rValue;
               
            }
        }

 

 

/*************************    在后台代码中调用上移下移函数    ***************************/

protected void rpLists_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            int idx = int.Parse(e.CommandArgument.ToString());
            if (e.CommandName == "btnUp")//上移
            {
                int retVal = FriendMgr.UpDown(idx, 1);
                if (retVal > 0)
                {
                    this.Alert("操作成功");
                    BindData();
                }
                else
                {
                    this.Alert("操作失败");
                }
            }
            else if (e.CommandName == "btnDown")//下移
            {
                int retVal = FriendMgr.UpDown(idx, -1);
                if (retVal > 0)
                {
                    this.Alert("操作成功");
                    BindData();
                }
                else
                {
                    this.Alert("操作失败");
                }
            }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值