JosefMedlem sedan mars 20023 561 inlägg Exception Details: System.InvalidOperationException: Invalid attempt to FieldCount when reader is closed.
[b]Source Error: [/b]
Line 36: int _si = Convert.ToInt16(catlist.SelectedItem.Value);
Line 37: dgLinks.DataSource = BL.getLinkList(_si);
Line 38: DataBind();
Line 39: }
Jag förstår inte varför jag får det här felet hela tiden. Får felet på rad 38 (DataBind()). Vad är det här FieldCount för någonting?
GladhMedlem sedan maj 20012 812 inlägg BL.getLinkList() är en funktion som returnerar en DataReader?
Om det är det så for du inte stänga din koppling till databasen för då stänger du DataReadern med.
Så visa hur din getLinkList() ser ut så kan vi hjälpa dig bättre.
- m
JosefMedlem sedan mars 20023 561 inlägg Aha! Det förklarar saken. Men hur ska jag lösa det utan att behöva stänga kopplingen på cb-sidan?
erkaMedlem sedan dec. 19996 522 inlägg Finns några alternativ, lägg det i en arraylist istället för i en datareader.
Varför vill du inte stänga kopplingen på codebehind sidan ?
JosefMedlem sedan mars 20023 561 inlägg Skulle helst vilja ha sådana kommandon i DataAccess-klassen där metoden ReciveDataReader finns. Ser mycket "renare" ut på det sättet.
Ska beakta ditt förslag på ArrayList.
Återkommer...
erkaMedlem sedan dec. 19996 522 inlägg Du kan ju göra på följande sätt. Ha en funktion som returnerar en datareader till lagret under dataaccess, du behåller kopplingen till dbn öppen, sen när du har lagt över datareaderni någon annan typ av "datahållare" anropar du en funktion i DataAccess som stänger anslutningen, vilket jag antar att du redan har, som du kanske anropar från funktioner som ReciveDataReader tex.
PMedlem sedan jan. 20012 204 inlägg Annars finns ju datatablen...
GladhMedlem sedan maj 20012 812 inlägg Det du gör är att du inte stänger din koppling någonstans :)
Du skickar istället med ett CommandBehavior.CloseConnection när du kör din ExecuteReader(). Vilket då gör att din koppling till databasen är öppen så länge dit readerobjekt inte är stängt.
Sedan när du har bundit objektet till din control så stänger du reader objectet'
int _si = Convert.ToInt16(catlist.SelectedItem.Value);
SqlDataReader oReader = BL.getLinkList(_si);
dgLinks.DataSource = oReader;
DataBind();
oReader.Close(); //-- detta tillsammans med CommandBehavior.CloseConnection stänger din koppling till databasen.
- M
JosefMedlem sedan mars 20023 561 inlägg Det fick bli Gladh´s lösning.
Tackar! :)