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

 

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

SOS προβλημα με web forms

Îåêßíçóå áðü ôï ìÝëïò gtk. Τελευταία δημοσίευση από το μέλος George J. Capnias στις 27-06-2006, 16:25. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  27-06-2006, 02:17 14252

    SOS προβλημα με web forms

    Θα το πω οσο πιο αναλυτικα γινεται :
    Φτιαχνω μια web application.
    Αποτελειται απο τη σελιδα "page1 " οπου ο χρηστης καλειται να συμπληρώσει καποια textboxes .Στην ιδια σελιδα υπαρχει και ενα button ,οπου το παταει ο χρηστης αφου συμπληρωσει τις παραμετρους.
    Το button μεσα ,περιεχει μια Server.Transfer("page2.aspx") εντολή ,οποτε η page2 καλειται με σκοπο να επεξεργαστει τα στοιχεια που εβαλε ο χρηστης στην page1.
    Τα στοιχεια του χρηστη τα μετεφερα στην page2 με εντολες τυπου Request.Form["param1"].

    Ολα καλα μεχρι εδω.
    Το προβλημα ειναι εδω: στην page2 εχω ενα button οπου οταν το πατησει ο χρηστης,
     να τον παει στην page3 με την εντολη Server.Transfer("page3.aspx").Τοτε εμφανιζεται το λαθος και δε μπορει να καλεσει τη page3 !!

    Υποπτευομαι οτι κατι παιζει με τις Server.Tranfer εντολες .Εχει κανεις καμια ιδεα πως να λυσω το προβλημα??

    Ευχαριστω
  •  27-06-2006, 10:18 14255 σε απάντηση της 14252

    Απ: SOS προβλημα με web forms

    Αν και περιέγραψες το πρόβλημα αρκετά αναλυτικά, δεν μας είπες ποιό ακριβώς είναι το λάθος που σου εμφανίζει. Γράψε μας κάποια επιπλέον στοιχεία για το Exception που σου βγάζει και νομίζω ότι θα βρεθεί η λύση.

    Στα γρήγορα πάντως, θα μπορούσες αντί να κάνεις Server.Transfer να εκτελέσεις την Response.Redirect και να περάσεις τις παραμέτρους του χρήστη στο QueryString, π.χ. Response.Redirect("page2.aspx?param1=1¶m2=2"). Η Response.Redirect εν γένει είναι πιο αργή γιατί υποδεικνύει στον browser να κάνει το redirect και άρα υπάρχει ένα roundtrip στον client, αλλά μπορεί να σε γλυτώσει από το πρόβλημα που αντιμετωπίζεις.
    Στερνή μου γνώση να σε είχα πρώτα...
  •  27-06-2006, 12:47 14260 σε απάντηση της 14255

    Απ: SOS προβλημα με web forms

    Δε χρησιμοποιησα Response.Redirect γιατι εχω να μεταφερω περιπου 20 παραμετρους στην page2.
    Ο κωδικας στην page1 ειναι καπως ετσι:

    public class Search : System.Web.UI.Page
        {
            protected System.Web.UI.WebControls.DropDownList lstStartingFrom2;
            protected System.Web.UI.WebControls.TextBox txtDepartureDate2;
            protected System.Web.UI.WebControls.DropDownList lstDestination2;
           
            private void Page_Load(object sender, System.EventArgs e)
            {
                // Put user code to initialize the page here
            }
            private void btnSearch_Click(object sender, System.EventArgs e)
            {
                Server.Transfer("page2.aspx");   
            }
         }

    Ο κωδικας  στην page2 ,οπου επεξεργαζεται τα στοιχεια της page1 ειναι :

    public class SearchResults : System.Web.UI.Page
        {
            protected System.Web.UI.WebControls.DataGrid DataGrid1;
           private void Page_Load(object sender, System.EventArgs e)
            {
               
                findqosmax.FindQoSMaxim qosobject=new findqosmax.FindQoSMaxim();//εδω φτιαχνω αντικειμενο ενος web service
                int[] arr2=qosobject.SearchTrainQoSMaxima(); //καλω τη μεθοδο του web service
                int delay2=arr2[0];
                Session["train_ws_ID"]=Convert.ToString(arr2[1]);
                train.Service1 trainservice=new train.Service1();//και εδω φτιαχνω ενα αντικειμενο web service οπου καλω τη μεθοδο του
                DataSet searchtrainset= trainservice.SearchTrain  (Request.Form["lstStartingFrom2"],
                        Request.Form["lstDestination2"],Convert.ToDateTime(Request.Form["txtDepartureDate2"]),delay2);//
                DataGrid2.DataSource=searchtrainset.Tables[0].DefaultView;
                DataGrid2.DataBind();
             }
             private void Button1_Click(object sender, System.EventArgs e)
            {
              Server.Transfer("page3.aspx",true);
             }
         }


    Το περιεργο ειναι οτι τα web services μου τρεχουν κανονικα ,δηλαδη γεμιζουν το datagrid με τα αποτελεσματα που πρεπει.Το λαθος βγαινει ,οταν παει να πατησω το Button1_click στη page2 .Το λαθος :

    Server was unable to process request. ---> System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM. at TrainService.Service1.SearchTrain(String startPlace, String destinationPlace, DateTime departureDate, Int32 timeDelay) in c:\inetpub\wwwroot\trainservice\service1.asmx.cs:line 127 --- End of inner exception stack trace

    Το περιεργο ειναι οτι η μεθοδος SearchTrain δουλευει κανονικα ,αφου μου το γεμιζει το datagrid με τα αποτελεσματα,οι ημερομηνιες δηλαδη δεν εβγαλαν κανενα σφαλμα.

    Προσεξτε οτι στην page2 ο κωδικας ειναι στην Page_Load.

    Σας ευχαριστω παιδια.Οποιαδηποτε βοηθεια ευπροσδεκτη



  •  27-06-2006, 16:25 14266 σε απάντηση της 14260

    Απ: SOS προβλημα με web forms

    Θα μπορούσες να χρησιμοποιήσεις το Cross-Page Posting feature του ASP.NET, αντί του Page.Tranfer και να έχεις το object model της προηγούμενης σελίδας στην επόμενη. Δες το σχετικό άρθρο στο MSDN.

    Το πρόβλημα έτσι όπως το περιγράφεις δεν φαίνεται να έχει να κάνει με τις μεταβλητές που μεταφέρονται. Από αυτό που περιγράφεις σαν λάθος, φαίνεται η μεταβλητή με τύπο ημερομηνίας που περνάς στο webservice, να είναι έξω από τα όρια που πρέπει να έχει... Πιθανώς γιατί είναι κενή. Δεν είναι απαραίτητο να πάρεις τις μεταβλητές με Request.Form. Άμα είναι server side controls μπορείς να διαβάσεις τις τιμές τους...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems