メニュー内のアイテムの順序を次または前のアイテムに置き換えることで、そのアイテムの順序を変更 (場所または順序を変更) したいとします。これを行うには、次のようなコードを使用します。
DECLARE @SO tinyint --, @MenuID uniqueidentifier
--SET @MenuID = (Select top 1 MenuID from MenuItems where MenuItemID = @ID)
SET @SO = (Select top 1 SO from MenuItems where MenuItemID = @ID and MenuID = @MenuID)
if @SO > 1
begin
UPDATE dbo.MenuItems SET SO = @SO WHERE MenuItemID = (select top 1 MenuItemID from MenuItems WHERE SO = @SO - 1 and MenuID = @MenuID)
UPDATE dbo.MenuItems SET SO = @SO - 1 WHERE MenuItemID = @ID
END
このコードは、毎回 1 回上下に移動するだけで問題なく動作します。2 つの質問があります。
- これを行うためのより良い解決策はありますか?
- 次のように、いくつかのアイテムを同時にいくつかのステップの上または下に移動したい場合はどうすればよいですか?
から:
> 1
> 2
> 1
> 2
> 3
> 3
> 4
> a
> b
> 5
に:
> 1
> 2
> 1
> 2
? a
? 5
> 3
> 3
> 4
> b
ありがとう、カルド