tack för url... men blev inte så mycke klokare för de... får detta fel meddelande när jag försöker "stänga" mitt Dataset objekt:
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS1540: Cannot access protected member 'object.~Object()' via a qualifier of type 'DataSet'; the qualifier must be of type 'nav_aspx' (or derived from it)
Source Error:
Line 30: Response.Write("\n</body>\n</html>");
Line 31:
Line 32: ds.Finalize();
Line 33: %>
Du behöver aldrig stänga ett DataSet i .Net. DataSetet kopierar helt enkelt över alla raderna ifrån databasen och håller alla dessa i minnet, till skillnad från gamla ADO.
När du sedan trillar ut ur det block där du definierade DataSetet kommer GC att automatiskt ta hand om ditt objekt, i detta fall ditt dataset.
Däremot måste du öppna och stänga en connection om du använder dig av DataReader, vilken liknar gamla ADO lite mer.
Bara en liten övrig kommentar. I .Net ska du aldrig blanda kod med design. Fyll istället ex. en Repeater med ditt dataset och ha en LinkButton i denna repeater. För exempel på sådant, kolla igenom Quickstarten. http://samples.gotdotnet.com/quickstart/Default.aspx
Precis. Antingen har du två helt skilda dokument (ett med c#-koden och ett med design-koden, inkl asp.net, sk codebehind) eller så strukturerar du åtminstone upp sidan så här:
----------------
all c#-kod
----------------
<html>
...din sida...
</html>
----------------
Dessutom ska du naturligtvis använda asp.net! Exempelvis, istället för detta:
...så ska du naturligtvis använda asp.net-taggar (annars förlorar du ju halva poängen med .net), exempelvis:
<asp:HyperLink id="myHyperlink" runat="server" />
//där du sedan sätter dess parametrar i din c#-kod, exempelvis:
string myString = "se";
myHyperlink.NavigateUrl = "http://www.minsida.com/default.aspx?language=" + myString;
Du ska i princip aldrig använda Response.Write annat än om du vill skriva ut data när du testar olika grejjer. Till allt som ska vara dynamiskt använder du asp.net-taggar, exempelvis <asp:Button...> <asp:ImageButton...> <asp:Label...> <asp:DropDownList...> osv. I början kan det vara lite krångligt och förvirrande med alla nya taggar men när du fått grepp om den så kommer du få igen det MÅNGA gånger!
------------------
Jag kan inte komma på någon signatur.
Bara en liten övrig kommentar. I .Net ska du aldrig blanda kod med design. Fyll istället ex. en Repeater med ditt dataset och ha en LinkButton i denna repeater. För exempel på sådant, kolla igenom Quickstarten. http://samples.gotdotnet.com/quickstart/Default.aspx
jo.. vet att man ska helst använda Repeater... men då kan jag inte få de funkationer som jag ska ha i min webshop meny... dvs.. med undermenyer osv.. efterrsom man inte kan lägga en repeater i en annan... iaf funkade de inte när jag försökte... men tack för hjälpen
Jodå, du kan visst ha en repeater i en repeater i en repeater...
Tro mig, du kan göra ALLT med asp.net som du kan göra på det gamla sättet, plus en hel del annat också. Om du "tror" att det inte går, så är det snarare så att du inte har lärt dig hur man gör. :)
Du får använda findcontrols för att hitta en control i en control.
------------------
Jag kan inte komma på någon signatur.
...och ja, nu ser det betydligt trevligare ut! Visst kan du lägga koden högst upp, men ska du vara riktigt seriös så skapar du ett eget .cs-dokument för din c#-kod, men så länge du jobbar själv och inte behöver/vill kompilera koden så är det väl inte så viktigt. Kan vara bra att lära sig dock, exempelvis om du skapar en egen klass med funktioner som du ofta använder till alla dina sidor. Kompilera, lägg dll-filen i din binkatalog, sen kan du enkelt anropa klassen från alla dina aspx-sidor!
Njäe, skit i cs-filerna så länge, det är nog rätt onödigt för den som snickrar på hemsidan... det är som sagt framför allt om du vill kompilera koden och skapa dll-filer som du måste använda det (observera att sidan kompileras även när du gör på ditt sätt, första gången när du kliver in på sidan så kompileras den och ligger sedan på serverns ramminne! Till skillnad från gamla asp, som ju intepreteras varje gång någon besöker sidan...).
------------------
Jag kan inte komma på någon signatur.
Ja, det kan man väl säga... även om det naturligtvis finns skillnader. Det finns säkert någon som kan förklara det bättre än jag. En av de viktigaste skillnaderna med hela asp.net är ju att du bygger funktionaliteten med ett riktigt objekt-orienterat programmeringsspråk - och det gör du ju alltid, oavsett du använder code-behind eller inte. I gamla asp har du den möjligheten att använda ett riktigt programmeringsspråk endast om du skapar com-objekt och det var/är både svårare, sämre och klurigare att jobba med, i jämförelse med .net.
-----------------
Jag kan inte komma på någon signatur.
finns de någon fördel att lägga de i en .cs fil?
Det enda svaret som behövs är att det är så man ska göra, annars gör man sig skyldig till ett ännu hemskare brott än de som använder ASP utan COM. Logiken ska inte vara bunden till presentationen, vilket kanske blivit en klyscha men det stämmer förbannat bra. Gör man något annat än ett snabbt fulhack borde det t.o.m. vara spöstraff på att blanda logik med gränssnitt. Alla objektorienterade plattformar i världen är inte värda ett piss om man inte själv arbetar efter samma modell. :)
Vill man efter ett tag slänga på ett annat gränssnitt på sin applikation (vanlig Windows-miljö eller något elektroniskt gränssnitt som SOAP, t.ex.) så slipper man skriva om allt.
------------------ God is real, unless declared integer.