Avatar billede ha9953 Nybegynder
29. april 2006 - 16:36 Der er 3 kommentarer og
1 løsning

sletning af menu item samt alle underliggende sider

Hej

jeg arbejder i øjeblikket med en asp:menu i asp.net 2.0 der er baseret på en sqlsitemapprovider.

selve menutabellen ser ud som følgende:

ID
Url
Title
Description
Roles
Parent

en menuitem kan have en til flere submenuer som igen kan have en til flere submenuer osv.

Mit store problem er at få lavet en stored procedure der kan slette en menu item og alle underliggende sider, deres undersider osv.

Nogen der har en løsning..... jeg er efterhånden ved at give fortabt :-(
Avatar billede driis Nybegynder
29. april 2006 - 16:43 #1
Du kan lave en rekursiv stored procedure, der ser på om der er nogen rækker hvor Parent=@IDToDelete; for hver af disse rækker kalder denne stored procedure sig selv og endelig sletter den rækken @IDToDelete.
Avatar billede ha9953 Nybegynder
29. april 2006 - 16:56 #2
ok - jeg er ikke den store haj til dette - har du et eksempel
Avatar billede driis Nybegynder
29. april 2006 - 17:40 #3
Min første tanke var egentlig at lave en reel rekursiv procedure med en cursor til at holde styr på, hvor langt den var nået - men det viser sig at cursoren bliver lukket når man kalder en stored procedure, hvilket gav problemer.

Så jeg har lavet flg. eksempel i stedet, som gør det samme:
CREATE PROCEDURE [dbo].[DeleteMenu]
    @IDToDelete int
AS
BEGIN TRANSACTION
-- midlertidig tabel
DECLARE @tmp TABLE ( ID int ) ;

-- INSERT root
INSERT INTO @tmp ( ID ) VALUES ( @IDToDelete );
WHILE @@ROWCOUNT <> 0
BEGIN
    -- Find children "rekursivt"
    INSERT INTO @tmp SELECT ID FROM tblMenu WHERE Parent IN ( SELECT ID FROM @tmp ) AND NOT ID IN ( SELECT ID FROM @tmp );
END
-- Slet alle fundne ID's
DELETE FROM tblMenu WHERE ID IN ( SELECT ID FROM @tmp );
COMMIT TRANSACTION
GO
Avatar billede ha9953 Nybegynder
29. april 2006 - 19:44 #4
PERFEKT :-) tusind tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester