0
想象一下,我想通過用下一個或上一個項目替換它的順序來重新排序(更改位置或順序)菜單中的項目。要做到這一點,我使用這樣的代碼如下:將層次表中的某些項目向上或向下移動的最佳方法是什麼?
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
> 3
> 3
> 4
> a
> b
> 5
要:
> 1
> 2
> 1
> 2
? a
? 5
> 3
> 3
> 4
> b
感謝, Kardo
感謝您的回答!是的,這些ID是唯一的,但我不知道如何從TreeView獲取下一個或上一個ID。 – Kardo