Hej, Om jag förstått rätt får du med njae, jag antog att jag inte gjorde mig förstådd. Problemet är inte sql:en utan att presentera informationen. Jaf vill att det ska se ut så här: Skulle precis svara på det här och ge dig min åsikt men ser att du har löst det precis så som jag skulle ha gjort, med två nästlade datalister... Antar att du då hämtar både "föräldrar" och "barn" i ett anrop (alltså en select-sats för föräldrar och en select-sats för barnen i en stored procedure) till databasen och sen skapar en relation mellan dom två, eller? Så skulle iaf jag ha gjort... suck, får väl forsätta göra så då, had hoppats att det fanns ngn übersmart lösning men ack. Det är väl egentligen bara att hämta ut din data och sedan dynamiskt skapa en tr för kapitlen och en ny tr för styckena. På så sätt för varje rs med datareadern får du ut det du behöver. Förstår inte riktigt, tycker nästan att du har använt dig av den "übersmarta" lösningen... Iaf om du gjort så som jag föreslår (ingen hybris här inte :-)) übersmartast & überbäst prestanda.. ;-D Nja, så hade jag nog inte gjort iaf... Fast jag kanske inte ska tolka Olas inlägg som kritik mot mitt förslag? Lite svårt att tyda :-) Svårt att tyda.. ? Kör det, så ser du att det är ganska simpelt.. Martin, det var inte alls kritik mot din lösning. Den fyller sin funktion ibland och jag har använt detta i ett av mina system. Lösningen lämpar sig t.ex. om följande gäller: Jo jag tyckte nog att det var lite svårt att tyda tyvärr... Du hade gärna fått förklara det lite mer än med bara en kort mening, en smiley och en select-sats... :-) Det är faktiskt i precis såna lägen som jag har använt "min" lösning... För att visa en hierarkisk struktur av företag i olika nivåer och anställda på respektive företag... Men återigen, tack för din alternativa lösning... Förenklad så att alla ska förstå ;-) Tutorial.. ;-) Ytterligare tips: Ola, Martin, det är helt ok :)datalist med rubriker
jag vill presentera data från en SQL-fråga i en datalist. INformationen som jag vill visa är en katalog med underliggande kapitel och stycken och jag vill att det ska se ut så här:
kapitel 1
stycke 1
stycke 2
stycke 3
kapitel 2
stycke 1
stycke 2
stycke 3
kapitel 3
stycke 1
stycke 2
stycke 3
osv.
kapitel finns i en tabell och stycke i en annan, måste jag nästla två st listor för åstadkomma detta? SKulle vilja köra en sql-fråga och sen bara sätta kapitel som rubrik. Gör jag mig förstådd? OM så, vad är bsta lösningen?Sv: datalist med rubriker
kapitel 1
stycke 1
kapitel 1
stycke 2
osv
Då finns det något bra i SQL som i stället för
INNER JOIN
Använder du
LEFT JOIN
eller
RIGHT JOIN
SELECT * FROM tabell1 LEFT JOIN tabell2 ON tabell1.id = tabell2.tabell1_id bla bla bla
Mvh
KjellSv:datalist med rubriker
RUBRIK
titel författare
titel författare
NÄSTA RUBRIK
titel författare
titel författare
Både rubriker och titel/författare hämtas från en databas. Hur många som finns av varje är ej känt. Hur är det bäst att hämta informationen? Nu kör jag en datalist i en datalist, där yttre datalisten presenterar RUBRIKEN och den inre presenterar titel/författare, men finns det verkligen inget bättre sätt?
Sv: datalist med rubriker
Private Sub DL_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DL.ItemCreated
If viewstate("xKapitel") <> e.Item.DataItem("kapitel") Then
viewstate("xKapitel") = e.Item.DataItem("kapitel")
'SKAPA NY RAD OCH ADDA TILL DATALISTEN
End If
End Sub
Hämta dvs allt samtigt i samma fråga. Sen kollar du bara när en ny rubrik ska renderas ut som jag gjort ovan.
Nåt sånt kanske? Eller kan du ju använda dig av session och inte viewstaten.
Sv: datalist med rubriker
Sv:datalist med rubriker
Sv:datalist med rubriker
Sv: datalist med rubriker
Dvs endast ett anrop till databasen där du hämtar föräldrar och barn i en SP. Därefter skapar du en DataRelation mellan dina två datatables i ditt DataSet. Sen binder du din första tabell till den yttersta datalisten och om du har gjort rätt i din innersta datalist sen så visas "barnen" till respektive förälder automagiskt...
Slipper därmed allt vad loopar och if-satser heter... Sv:datalist med rubriker
-------------------------------------------------------------------------------------
USE Northwind
SELECT OrderId, ShipName AS TdText, 1 AS TxtOrder
FROM Orders
WHERE orderId in (10250, 10252)
UNION
SELECT OrderId, ' ' + p.ProductName AS TdText, 2 AS TxtOrder
FROM [Order Details] d inner join
Products p on d.ProductID=p.ProductID
WHERE orderId in (10250, 10252)
ORDER BY OrderId, TxtOrder
-------------------------------------------------------------------------------------Sv: datalist med rubriker
Hade haft en SP där jag har två separata select-satser, en för att hämta föräldrar och en för att hämta barnen. Dessa hamnar då i DataSet.Tables(0) respektive DataSet.Tables(1) och därefter kan du skapa en DataRelation mellan dessa... Sv:datalist med rubriker
Och väldigt mycket bättre prestanda..
All data kan sprutas ut på sidan med SqlDatareader.
Med Dataset-lösningen så måste du anropa GetChildRows för varje Parent (väl?),
[EDIT: eller så görs det bakom kulisserna i den automagiska Databindningen!]
plus att du måste blåsa upp all data i ett Dataset - inte så bra om listan är lång.
Grundfrågeställningen var ju om man kunde lösa det med SQL, inte om man kunde lösa det med .NET-kod, Dataset och en nästlad repeater.Sv: datalist med rubriker
1. Du vill ha ut hierarkisk data på en sida.
2. Du vill även ha ut samma data som XML.
3. Du har inte extrema prestandakrav på applikationen.
Mitt förslag är en alternativ lösning som ger bättre prestanda.Sv: datalist med rubriker
Men det kan nog vara så som du säger och i så fall är jag glad att jag lärt mig nåt nytt idag också, tackar för det... Har själv än så länge inte upplevt några prestandaproblem när jag löst det så som jag föreslår i mitt inlägg men det kan som du säger nog uppstå vid större datamängder...
Och vad gäller frågeställningen så tolkar jag det som att han frågar efter bästa lösningen på hans problem och det tycker jag nog att jag ger ett förslag på iaf (eller rättare sagt säger jag att jag hade gjort precis som han gjort), även om du kanske överbevisar mig... Sv:datalist med rubriker
Sv:datalist med rubriker
USE Northwind
SELECT CategoryID, 1 AS Sortering2, CategoryName AS Txt
FROM Categories
UNION
SELECT CategoryID, 2 AS Sortering2, ' |-' + ProductName AS Txt
FROM Products
ORDER BY CategoryID, Sortering2
Ger
------
CategoryID Sortering2 Txt
----------- ----------- -------------------------------------------
1 1 Beverages
1 2 |-Chai
1 2 |-Chang
1 2 |-Rhönbräu Klosterbier
2 1 Condiments
2 2 |-Aniseed Syrup
2 2 |-Chef Anton's Cajun Seasoning
2 2 |-Chef Anton's Gumbo Mix
3 1 Confections
3 2 |-Chocolade
3 2 |-Gumbär GummibärchenSv: datalist med rubriker
Fråga 1
---------
SELECT CategoryID, 1 AS Sortering2, CategoryName AS Txt
FROM Categories
Ger
CategoryID Sortering2 Txt
----------- ----------- -------------------------------------------
1 1 Beverages
2 1 Condiments
3 1 Confections
nästa fråga
-------------
SELECT CategoryID, 2 AS Sortering2, ' |-' + ProductName AS Txt
FROM Products
ger
CategoryID Sortering2 Txt
----------- ----------- -------------------------------------------
1 2 |-Chai
1 2 |-Chang
1 2 |-Guaraná Fantástica
1 2 |-Sasquatch Ale
1 2 |-Steeleye Stout
1 2 |-Côte de Blaye
1 2 |-Chartreuse verte
1 2 |-Ipoh Coffee
med UNION slås de båda resultaten ihop till en logisk tabell.
med sortering på CategoryID, Sortering2 så hamnar allt i rätt ordning.Sv:datalist med rubriker
Sortering2 = 1 eller 2,
kan användas t.ex. för att skapa indrag, i form av
"<div class='indrag" & Sortering2 & ">"
Dvs den alternerar mellan
CSS class 'indrag1' och 'indrag2'
Sv: datalist med rubriker
Jag ville bara ge honom ett exempel på hur man kan lösa en hierkisk struktur. I övrigt håller jag med dig.Sv:datalist med rubriker
Och jag ville visa ett annat sätt man kan göra det på.