08. april 2007 - 22:38Der er
15 kommentarer og 1 løsning
Sæt en værdi = session fra en SELECT linje
Hej
Hvis jeg har følgende kode, hvor kan jeg så sætte de forskellige ting = et navn, ved godt at jeg i min SELECT linje kan sige Tabel1 AS Tabel men hvis jeg nu vil sætte det som en session hvor i koden skal den så vise at Session("ImageShow") = DogImageDate !?
Public Sub OpenDB() Dim ObjConn As OleDbConnection Dim ObjCmd As OleDbCommand Dim ObjReader As OleDbDataReader 'ConnectionString og SQL linje. Dim ConnectionString As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString ObjConn = New OleDbConnection(ConnectionString) ObjCmd = New OleDbCommand("select * from somestuff where status='MAYBE' order by date desc", ObjConn) 'Prøv at åben Connection. Try ObjConn.Open() ObjReader = ObjCmd.ExecuteReader(CommandBehavior.CloseConnection) 'Hvis der er data, udskriv da dataen til en Repeater med id=Repeater1. If ObjReader.HasRows() Then Repeater1.DataSource = ObjReader Repeater1.DataBind() Else 'Hvis der ikke er data, lav en fejl tekst. Response.Write("intet i databasen DB") End If Catch ex As Exception Console.WriteLine(ex.Message) Finally 'Lukker Connection, Reader og Sletter Hukommelse. If Not ObjReader Is Nothing Then ObjReader.Dispose() End If If Not ObjConn Is Nothing Then ObjConn.Dispose() End If
Værdierne læst fra readerne er gemt i repeateren, og du kan få fat i dem ved at løbe igennem Repeater1.Items collection, og dér så sætte din session-parameter.
Mit problem er at jeg skal lave den Repeater1 som jeg har nu men jeg skal også bruge en session til en Formview og her skal jeg bruge den session som skal være = DogImageDate. FormView bliver selvf. kaldt efter min Repeater1.
Så vidt jeg forstår så prøver du at få fat i data fra database, vise dem i repeater, og samtidigt gemmme en værdi i Session er det rigtigt ? En af måderne du kan gøre det på er som anført ovenfor.
Alternativt kan du gøre som du selv har prøvet, dog ved først at have en datareader, hvor du får fat i din værdi og derpå lukker den, og derpå at starte en ny datareader som du så binder til din repeater.
CITAT: Så vidt jeg forstår så prøver du at få fat i data fra database, vise dem i repeater, og samtidigt gemmme en værdi i Session er det rigtigt ? En af måderne du kan gøre det på er som anført ovenfor.
Jo det er det jeg vil synes bare ikke jeg kan se det ud fra det link du gav...
Når du har fået data ind i din repeater, så er de gemt der. Efterfølgende kan man fiske dem op derfra.
Det link viser et eksempel på hvordan du looper gennem de RepeaterItems der er tilhører en repeater, hvor hver RepeaterItem svarer til en indlæst record. Endvidere vises der hvordan, i det enkelte RepeaterItem, du så får fat i de værdier der måtte være gemt der. Når du så har fat i det ønskede, så er det dér du kan gemme værdien i session.
Du kunne prøve at køre den kode der er angivet i eksempelt - måske bliver det klarere.
Ellers, lav det med to readers som foreslået - det er aldeles uelegent, men det vil da virke og er nemt.
Nemmerlig! :-) Men eksemplet svarer jo sikkert ikke helt til indholdet i din repeater - du har vel nogle labels eller tekstboxe ? så skal der tilsvarende stå Label eller TextBox i CTYPE- kaldet. Og "item.controls(0)" er så den første textbox/label/whatever, item.controls(1) er den anden osv osv.
Jeg har prøvet at lege med det men synes ikke jeg kan få det til at virke, kunne det tænkes at du vil hjælpe med et eks. som ikke udskriver til en Label men bare sætter evt. Database tabel felt "tester" = Session("udtræk"). Så tror jeg helt sikkert jeg kan komme videre.
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.