05. september 2003 - 12:28Der er
6 kommentarer og 1 løsning
Hente Images via database
Jeg har problemer med, at få images frem på en webform, når det drejer sig om at skulle hente disse images via en database. Images skal ikke ligge direkte i databasen, men et eller andet sted på disken. Databasen skal bare indeholde filplaceringen på images, og når der søges på alle images, skal den kunne opgive filplaceringen, og så ud fra dette hente alle images. Hvis nogen kan hjælpe med dette vil jeg være taknemmelig (især hvis der er nogen der har eksempler i C# !).
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Så simpelt er det desværre ikke. Problemet er hvordan jeg får denne Url fra databasen skrevet ind i min ImageUrl i ASP Image-kontrollen ? Det skal ikke gøres manuelt, -men det skal ske automatisk, når eksempelvis en linie i en ListBox bliver markeret. Linien i ListBoxen er f.eks. et katalognavn, hvor alle billederne i dette katalog så fremvises, når linien bliver markeret. Indtil videre har jeg problemer med bare at få ét billede vist på denne måde, men endnu værre bliver det, når man skal have alle billederne i kataloget vist. Man kan jo ikke gætte sig til, hvor mange Image-kontroller man skal have oprettet, da billederne i kataloget hele tiden kan variere i antal ????!!??!!
Jeg håber der kommer en løsning på dette (snart irriterende !) problem.
så laver du en repeater som du binder til din reader får fra db'en... inde i den repeater har du en image-kontrol, som asp.net så selv sørger for at oprette x-antal gange
Jeg kan få Repeateren til at fungere, -men den tager kun ét billede (det sidste i rækken !). Jeg har så forsøgt med en foreach-løkke, -men heller ikke med held. Skal man måske anvende DataList, DataGrid eller andet for at få alle data frem, eller SKAL det kunne fungere med Repeater, -og i så fald bliver jeg glad, hvis der kommer en lidt mere detaljeret løsning på dette ? På forhånd tak !
Nu har jeg fået det til at fungere med en DataList. Den virker tilsyneladende perfekt. Det er selvfølgelig stadigt irriterende ikke at vide, hvorfor det ikke lod sig gøre med en Repeater, så derfor nedskriver jeg lige koden, hvis der skulle være nogen der har lyst til at se den igennem.
void Page_Load(Object Henrik, EventArgs E) { Program klasseObjekt = new Program();
string tabelnavn = "Galleri";
//Sessionsobjekt hentet fra anden webform int katalogNr = Convert.ToInt16(Session["ValgtKatID"]); DataSet datasetObjekt1 = new DataSet();
//anvendelse af metode fra klassen Program (som ikke vises her, //-men den er der ikke problemer med !) datasetObjekt1= klasseObjekt.katalogBilleder(tabelnavn, katalogNr); DataTable dTable = datasetObjekt1.Tables[0];
foreach (DataRow dRow in dTable.Rows) { string filplacering = Convert.ToString(dRow[0]);
det er fordi at du sætter datasource på din repeater for hver row du har...
umiddelbart virker din kode lidt underligt, og og med at du for hver row i din dTable laver en NY table, men en NY row som du tilføjer til tabellen, og binder til din repeater.
Du skal altså kun oprette objTable EEN gang (uden for din foreach-løkke), og kun sætte din datasource EEN gang (også uden for din foreach-løkke).
så:
DataTable objTable = new DataTable("NewTable");
foreach (DataRow dRow in dTable.Rows) { string filplacering = Convert.ToString(dRow[0]);
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.