Avatar billede buzzlightbeer Nybegynder
25. juni 2009 - 10:11 Der er 4 kommentarer og
1 løsning

Listbox udtræk til querystinng

Hejsa,

Sidder og bøvler med et problem her, som jeg håber nogen kan komme med et forslag til en løsning på.

Jeg har en listbox, som bliver fyldt med indhold fra min database. Ved tryk på button, skal der laves et redirect til en ny side, som tager en query med, med samtlige items fra listboxen.

Kode:
DataRow qString = objCity.GetPickedCities(Convert.ToInt16(lbCitiesPick.SelectedValue));
Response.Redirect("Searchresult.aspx?entry=" + qString[1]);

SQL:
    public DataRow GetPickedCities(int id)
    {
        return objConn.getData("SELECT * FROM tblCity WHERE fld_CityID=" + id).Rows[0];
    }

Problemet er at det kun er den selectede item som ryger med i queryen, og altså ikke alt indholdet fra listboxen.

/Martin
Avatar billede aaberg Nybegynder
25. juni 2009 - 11:41 #1
En måde at gøre det på, er ved først at konvertere din DataRow til en Dictionary<string,string>. Når det er gjort, bruger du XmlSerializer eller BinarySerializer, til at serialisere indholdet. Resultatet konverterer du til en Base64 streng med Convert klassen. Denne string bruger du i din querystring.

Når du skal læse data, starter du med at rekonvertere Base64 strengen til et XML/Binær format, og deserialisere det ind til en Dictionary<string,string>

Hvis der er noget af dette der skal forklares bedre, siger du bare fra :-)
Avatar billede buzzlightbeer Nybegynder
25. juni 2009 - 13:06 #2
Tak for dit svar, aaberg.

Jeg har ikke rodet med Dictionary før, så jeg har lige siddet og leget lidt med det.
Desværre giver det ikke helt så meget mening for mig, så et lille eksempel på hvordan det kunne sættes op, ville være much appreciated :-)

/Martin
Avatar billede aaberg Nybegynder
26. juni 2009 - 09:06 #3
Jeg kan godt komme med et eksempel, men før jeg gør det, vil jeg lige spørge om der er nogen grund til at du ikke bruger Session objektet i stedet for. Dette vil løse dit problem meget nemmere. Derudover slipper du for den begrænsning, at det er meget begrænset hvor lang din querystring kan blive.

På den side der skal skrive til sessionen, gør du sådan:

DataRow pickedCitiesRow = objCity.GetPickedCities(Convert.ToInt16(lbCitiesPick.SelectedValue));
Session["pickedCitiesRow"] = pickedCitiesRow;

På siden der skal læse fra Sessionen:

DataRow pickedCitiesRow = null;
object objRow = Session["pickedCitiesRow"];
if (objRow != null)
{
  pickedCitiesRow = (DataRow)objRow;
}
Avatar billede buzzlightbeer Nybegynder
26. juni 2009 - 14:58 #4
Mange tak for dit svar. Det var min mening at benytte session, men kunne ikke helt finde en logisk måde at lave det på, så det er bare super at du her kommer med et godt eksempel! :-)
Avatar billede aaberg Nybegynder
26. juni 2009 - 15:13 #5
Godt at du kunne bruge det :-)

Jeg lægger et svar.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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