Avatar billede bsp_andreas Nybegynder
30. august 2004 - 11:37 Der er 11 kommentarer og
1 løsning

Add row to table - state problem

Hej
Jeg sidder lige og hygger mig med en asp:table som jeg har gemt inde i et userControl. Denne userControl er selvf. placeret på en anden aspx-side.

Nu har jeg lavet en lilel knap (på usercontrollet) som skal, når man trykker på den,  skal addere en ekstra række på tabellen. Dette fungere egentlig også fint nok, men hvis jeg trykker 2 gange adderer den ikke en ekstra og hvis man trykker på en anden knap på siden, udenfor userControllet, forsvinder de ekstra rækker igen.

Jeg går ud fra at det er et slags "state"-problem??

Min test-kode ser indtil videre således ud:

public class tilbud_repro_usercontrol : System.Web.UI.UserControl
{
  protected System.Web.UI.WebControls.Table Table2;

  ...

  private void Button1_Click(object sender, System.EventArgs e)
  {   
  TableRow tr = new TableRow();
  TableCell td = new TableCell();
  td.Text = "kakak";
  tr.Cells.Add(td);
  Table2.Rows.Add(tr);
  }
}
Avatar billede bsp_andreas Nybegynder
30. august 2004 - 11:38 #1
koden er fra usercontrollen ascx.cs-filen hvis der skulle være tvivl
Avatar billede snepnet Nybegynder
30. august 2004 - 11:44 #2
hej andreas :o)

det ville nok være en fordel for dig, hvis du sørgede for at have et dataset ell. liggende i session, som du så bandt til.
du kunne så tilføje rækkerne til datasættet, og så binde igen så de også kommer frem på skærmen... når du så har lyst, kan du gemme sagerne i basen.

mvh
Avatar billede bsp_andreas Nybegynder
30. august 2004 - 13:46 #3
-> snepnet

Hej
Sammen med spm. http://www.eksperten.dk/spm/533631 , har jeg nu fået opbygget en repeater som laver tabellen for mig osv.

Det ser også ud til at fungere med et dataset, men jeg har stadig problemer.
Jeg gør som du sagde i spm. jeg refererede til. Altså jeg sørger lige for at der er en tom linie, hvis ds er tomt. Ved et klik på en knap, adderer den så en row til ds, men hvis jeg trykker igen på samme knap, adderer den ikke en ekstra linie, men viser bare det samme igen.
Det du så mener er at jeg skal gemme det i noget "session"-halløj, men jeg havde det indtryk at Session var en ASP 3.0 ting. Havde .NET ikke introduceret en ny måde at klare det på.

Hvordan gemmer jeg mit dataset i session?? Jeg troede at hvis det var en variabel i min .cs-fil ville den gemme state på det. Jeg kalder new DataSet() sammen med erklæringen af variablen i min .cs fil.
Avatar billede snepnet Nybegynder
30. august 2004 - 13:59 #4
Session er stadig lige så gangbar som altid, men det er korrekt at der også er kommet nyheder til i den forbindelse.... Der er nu flere muligheder for sessionhåndtering, og der er kommet en ny mulighed til (Cache) + naturligvis ViewState.

Når jeg benytter Session plejer jeg at oprette properties til det - f.eks. sådan en her :

protected DataSet PageData
{
    get{return (object)Session["PageData"] != null ? (DataSet)Session["PageData"] : <null / defaultværdi, hvis en sådan giver mening>;}
    set{Session["PageData"] = value;}
}

Der er ikke nødvendigvis noget automatisk statehåndtering for de varable du opretter i din kode, men tilføjer du en kontrol der selv sikrer viewstate vil den gøre det afhængig af den måde du tilføjer den på.

Du kunne med ovenstående f.eks. have sådan noget her :

if(!IsPostBack)
{
  PageData = GetData(<some var>);
  DoBinding();
}

og i forbindelse med at du tilføjer en række kunne du så :

DataRow dr = PageData.Tables[0].NewRow();
// sæt værdier og
PageData.Tables[0].Rows.Add(dr);
// og husk derefter databinding
DoBinding();

Kan du følge det ?

mvh
Avatar billede bsp_andreas Nybegynder
30. august 2004 - 14:58 #5
nej! :) hold kæft hvor er det bare mandag i dag!

2 sek. jeg skal lige tænke mig om...

Hvad pokker er DoBinding() for en??


:o
Avatar billede bsp_andreas Nybegynder
30. august 2004 - 15:01 #6
hmm, tror måske jeg fandt ud af det

YES SIR!!!
Avatar billede bsp_andreas Nybegynder
30. august 2004 - 15:04 #7
nej vent!

Hvis jeg skriver noget i en af rækkerne og derefter lige vil have en række mere, så forsvinder det der er skrevet rækkerne.
Jeg glemmer måske lige at gemme dataene
Avatar billede bsp_andreas Nybegynder
30. august 2004 - 15:09 #8
øv - hvordan får jeg smidt de ny-indtastede data over i DataSettet??
Avatar billede bsp_andreas Nybegynder
30. august 2004 - 15:16 #9
øv igen! - når jeg nu lige tænker mig om, så bliver jeg vel nærmest nødt til at iterere mig igennem samtlige felter og hente data'ene ud og en efter en smide det over i et dataset?? Eller???
Avatar billede snepnet Nybegynder
30. august 2004 - 15:18 #10
ja det er der ikke nogen vej udenom desværre - ellers skal du virkelig igang med noget alvorligt ;o)
Avatar billede snepnet Nybegynder
02. oktober 2004 - 02:57 #11
hej andreas - du får også et svar her, hvis der var noget du kunne bruge, men spørg endelig hvis der stadig er ballade :o)
mvh
Avatar billede bsp_andreas Nybegynder
04. oktober 2004 - 09:32 #12
tak - jeg brugte session.
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