Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

aspx και page_load

Îåêßíçóå áðü ôï ìÝëïò evagelos. Τελευταία δημοσίευση από το μέλος tasos στις 18-02-2013, 19:22. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  18-02-2013, 16:20 72160

    aspx και page_load

    Γεια σας παιδια,φτιάχνω την 1η μου σελίδα σε asp και έχω μια basic ερώτησηστην page_load έχω αυτό:

            protected void Page_Load(object sender, EventArgs e)
            {
                LoadSqlDatas();
                LoadLB();
                //loadtmp();
            }

     

    η LoadSqlDatas φορτώνει απο ένα webservice ένα datatable με μεγάλο αριθμό rows.

    η LoadLB γεμίζει 2 listbox που έχω μέσα. Στην συνέχεια έχω βάλει ένα κουμπί και όταν ο χρήστης το πατάει τότε κανω διαφορους υπολογισμούς απο το datatable και τα εμφανίζω σε ένα chart στην οθόνη.

    1) Στο τέλος της διαδικασίας βλέπω ότι, για καποιο λόγω ξανα τρέχει η page_load γιατί ξαναβλέπω sql query στον sql ενώ δεν έπρεπε να υπάρχει αυτό. Επίσης επειδή τα listbox τα γεμίζω με loop και δεν τα αδειάζω ποτέ βλέπω ότι παίρνουν 2-3-4 φορές τιμες όσες φορες δηλαδή πατησα το κουμπί εκτέλεσης.

    2) Πως μπορώ να έχω το chart width όσο πλάτος έχει και η οθόνη του χρήστη; Αν έχει κινητό θα κανει scale μονο του ή θα πρέπε να του το πω;

     

            private void LoadDatas()
            {
                DataTable tmpDT = dt.Select("fyeid = 2012 and braid = 1").CopyToDataTable();
                Chart1.Width = Request.Browser.ScreenPixelsWidth;
                Chart1.Series[0].Name = "Τζίρος Πωλήσεων";
                Chart1.Series[0].IsValueShownAsLabel = true;
                Chart1.Series[0].Points.Clear();
                for (int i = 0; i < tmpDT.Rows.Count; i++)
                {
                    Chart1.Series[0].Points.AddXY(i + 1, Convert.ToDouble(tmpDT.RowsIdea["trnvalue"]));
                }
            }        
                
            
    
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                LoadDatas();
            }

     

     

    Ευχαριστώ

     

     

  •  18-02-2013, 19:22 72162 σε απάντηση της 72160

    Απ: aspx και page_load

    Όταν πατάει ο χρήστης το button γίνεται postback και η Page_Load(...) τρέχει ξανά.

    Για να αποφύγεις να ξανατρέξει το init της σελίδας στο Page_Load(...) θα πρέπει να την γράψεις κάπως έτσι:
    protected void Page_Load(object sender, EventArgs e)
    {
      if (!Page.IsPostBack) 
        {
            LoadSqlDatas();
            LoadLB();
        }
    }
    Γενικά, όταν κάνεις bind σε controls με δεδομένα από τη βάση, θα πρέπει να γίνεται όταν δεν είναι postback, αφού αποθηκεύονται στο viewstate. Για αυτό βλέπεις να γεμίζουν τα listbox διπλά.

    Τέλος, για το πλάτος του chart, δοκίμασε να του δώσεις Width="100%" ώστε να πιάνει το πλάτος του element που το περιέχει. Το να φαίνεται σωστά σε κινητό, πιθανότατα να χρειαστεί επιπλέον δουλειά με css και media queries.


    Τάσος Καραγιάννης

    Baby debugging steps...
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems