Avatar billede bumle90 Nybegynder
28. september 2004 - 23:53 Der er 11 kommentarer og
1 løsning

page reload

Jeg har en side med en knap.
Desuden er der et datagrid der indeholder data fra en base.
Når der trykkes på knappen lægges der data i databasen, som det er meningen skal vises ovre i datagriddet med det samme...Problemet er at det er som om siden ikke bliver reloadet....Er der noget jeg mangler at gøre?
Jeg har lavet min databind() på datagriddet i page_load()....men bliver den overhovedet kaldt når der bliver trykket på knappen? Jeg er lidt i vildrede....
Avatar billede snepnet Nybegynder
28. september 2004 - 23:54 #1
ja - den bliver kaldt inden handleren til knapklikket kaldes.
Avatar billede snepnet Nybegynder
28. september 2004 - 23:55 #2
du bliver nødt til at lægge din databinding i en rutine for sig, og lave et mønster som :

// i page_load
if(!IsPostBack)
  BindPage(); // eller hvad du nu kalder rutinen

i din knaphandler gør du så det der skal gøre, og kalder den samme metode (altså BindPage();)
Avatar billede snepnet Nybegynder
28. september 2004 - 23:57 #3
du kan eventuelt smide din kode herud... så skal jeg nok kigge på det.
mvh
Avatar billede bumle90 Nybegynder
29. september 2004 - 00:16 #4
Hmm hvis jeg sætter den ind i if(!IsPostBack) forsvinder datagriddet helt...Hvis jeg fjerner det bliver overskrifterne i det mindste vidst....Men der er ikke data i...Datagriddet bliver altså ikke opdateret. SQL er korrekt da hvis jeg går ind på siden igen er datagriddet fyldt ud som det skal være....Hmmmm hvad kan det være?
Avatar billede snepnet Nybegynder
29. september 2004 - 00:18 #5
det lyder som om du sætter griddet ind fra din code-behind, og ikke har angivet det i din aspx-kode.
der kan dog også være andre ting galt.... kan du ikke smide lidt af din kode herud. din page_load kunne være god (hvis det er der tingene foregår).
Avatar billede bumle90 Nybegynder
29. september 2004 - 00:27 #6
private void Page_Load(object sender, System.EventArgs e)
        {
            sql=" SELECT T_Forlaengninger.Date,T_Forlaengninger.CertID,T_Forlaengninger.Forlaengsperiode, T_Svejsekorrodinatore.Svejsekoordinator"+
                    " FROM T_Forlaengninger INNER JOIN T_Svejsekorrodinatore ON T_Forlaengninger.OprettetAf = T_Svejsekorrodinatore.SvejsekorrodID"+
                    " WHERE T_Forlaengninger.CertID=@certID ORDER BY T_Forlaengninger.Date ASC";
                Response.Write(sql);
                comm=new System.Data.OleDb.OleDbCommand(sql,OleConn);
                comm.Parameters.Add("@certid",System.Data.OleDb.OleDbType.VarChar);
                comm.Parameters["@certid"].Value=Request["certID"];
                DBreader=comm.ExecuteReader();
                datProlongs.DataSource=DBreader;
                datProlongs.DataBind();
                DBreader.Close();
        }
og det her er hvad der står i min aspx fil:
                    <asp:DataGrid EnableViewState="False" runat="server" id="datProlongs" BackColor="#eeeeee" HorizontalAlign="Center"
                                Font-Name="Verdana" CellPadding="4" Font-Size="10pt" AutoGenerateColumns="False">
                                <HeaderStyle BackColor="Black" ForeColor="White" Font-Bold="True" HorizontalAlign="Center" />
                                <ItemStyle HorizontalAlign="Center" />
                                <AlternatingItemStyle BackColor="White" />
                                <Columns>
                                    <asp:BoundColumn DataField="Forlaengsperiode" HeaderText="Periode" />
                                    <asp:BoundColumn DataField="Date" HeaderText="Dato" DataFormatString="{0:yyyy-MM-dd}" />
                                    <asp:BoundColumn DataField="CertID" HeaderText="Certifikat" />
                                    <asp:BoundColumn DataField="Svejsekoordinator" HeaderText="Bekræftet af" />
                                </Columns>
                    </asp:DataGrid>
Avatar billede bumle90 Nybegynder
29. september 2004 - 00:28 #7
Det er ret mystisk...forstår det ikke helt...
Avatar billede snepnet Nybegynder
29. september 2004 - 00:44 #8
Du har enable viewstate = false.... hvis du sætter den til true, skal griddet nok "huske" sig selv.
Avatar billede snepnet Nybegynder
29. september 2004 - 00:46 #9
ellers skal du nok sørge for at bruge dette mønster isteder :

// i page_load
// if(!IsPostBack)
  BindPage(); // bind altid !

i din knaphandler gør du så det der skal gøre, og kalder den samme metode (altså BindPage();)

Hvilket så medfører at du får lavet databinding 2 gange.
Avatar billede snepnet Nybegynder
29. september 2004 - 00:51 #10
du kan eventuelt afhjælpe det gigantiske viewstate et grid kan give dig ved en metode som denne :

protected override void OnPreRender(EventArgs e)
{
    foreach(DataGridItem dgItem in datProlongs.Items)
    {
        dgItem.EnableViewState = false;
    }
   
    base.OnPreRender (e);
}
Avatar billede bumle90 Nybegynder
29. september 2004 - 13:18 #11
yes sir, det var lige hvad der skulle til :)
Pointene er dine...
Men har du tid til at svare på et andet spg?
Det er måske lidt mere besværligt...og jeg har tit undret mig over hvordan jeg håndterer den slags problemer i asp.net.
Problemet er at jeg nu faktisk skal have 2 forms på 1 side. Altså dvs. 2 adskilte forms. Den ene skal man kunne indtaste noget i mens man i den anden skal kunne uploade noget. Hvordan gør jeg det i asp.net ?
Avatar billede snepnet Nybegynder
29. september 2004 - 18:13 #12
hvis du i samme vindue gerne vil have to "arbejdsområder" kan du bare lave en frameside, og så benytte nogle clientside-script til at sikre at der sker den nødvendige sykronisering af de to frames.
(f.eks. hvis du trykker på en knap i den ene frame, skal den måske vende på serveren, og derefter sikre at frame2 bliver opdateret... det kan du ikke eksekvere serverside, men du kan skrive script ud serverside der sikrer at det sker)

mvh
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