Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλησπέρα,

Δημιουργώ δυναμικά Text Box τα οποία τα βάζω σε πίνακα. Στη συνέχεια τα τοποθετώ σε PlaceHolder και τέλος το PlaceHolder το βαζω στη φόρμα(δηλ στο mainpanel που υπάρχει στατικά).

Επειδή είναι αρκετά μεγάλος ο κώδικας σας δίνω ένα κωμάτι ενδεικτικά.

 

>
private TextBox[] txtName;
txtName = new TextBox[authors]; //authors είναι μία int μεταβλητή που έχει πάρει τιμή
for (i = 0; i < authors; i++)
{
  txtName[i] = new TextBox();
  PlaceHolder1.Controls.Add(txtName[i]);
  Panel1.Controls.Add(PlaceHolder1);
}

 

Προσπάθησα να πάρω τη τιμή του κάθε TextBox με διάφορους τρόπους αλλά δεν λειτούργησε κανένας...

Μία από τις δοκιμές που έκανα είναι:

>
for (i = 0; i < authors; i++)
{
 String x = txtName[i].Text;
}

 

Πως μπορώ να πάρω τη τιμή του textbox?

Ευχαριστώ!!!

Επεξ/σία από jimmysnn_17
Δημοσ.

Απο πού καλείς το 2ο κομμάτι κώδικα; Εχει ορατότητα στο txtName; Οπως το βλεπω θα πρεπε να δουλεψει. Αν βγαζει καποιο error postαρε το, ή πες μας τι γινεται αντι για αυτο που θες.

Δημοσ.

Βασικα πρεπει να αναφερεται σε aspx. Αρα λογικα πρεπει να γινει ποστ απο το browser για να παρεις τα δεδομενα

Δημοσ.

Καταρχήν ευχαριστώ πολύ για τις απαντήσεις σας!!!

Παρακάτω δίνω κάποιες επιπλέων διευκρινήσεις.

 

1) Φτιάχνω ένα website σε μια εργασία στη σχολή, οπότε αναφέρομαι σε aspx.

2) Ο πίνακας έχει ορατότητα εκεί που το καλώ. Για ευκολία πείτε ότι ειναι και μέσα στην ίδια συνάρτηση.

3) Το error που βγάζει είναι "Object reference not set to an instance of an object" παρόλο που βάζω τιμές στα texbox όταν το τρέχω.

Επίσης κάτι άλλο που θέλω να διευκρινήσω είναι ότι τα δεδομένα αυτά θέλω να τα περάσω σε βάση, αλλά για αρχή προσπάθω να εκτιπώσω μία τιμή του πίνακα (πχ txtName[1]) σε ένα Label.

Καμία ιδέα?

Δημοσ. (επεξεργασμένο)

Παιδιά βρήκα το πρόβλημα που είχα...

Έκανα το εξής λάθος

 

>
public partial class NewArticleForm : System.Web.UI.Page
{
   private Label[] lblName;
   private TextBox[] txtName;
  
   public void function1(){
      lblName = new Label[5];
      txtName = new TextBox[5];
      int i;
      for(i=0; i<5; i++){
          lblName[i] = new Label();
          txtName[i] = new TextBox();
      }
  }
  

 public void function2(){
   Label1 = txtName[1].Text; //To label1 είναι στατικό
 }
}
   

 

 

Με λίγα λόγια δημιουργώ αντικείμενο στην function1 το οποίο δεν έχει εμβέλεια στη function2 :mad: ΤΕΡΑΣΤΙΟ ΛΑΘΟΣ!!!!

το txtName[index].Text ΄δουλεύει κανονικά

Επεξ/σία από jimmysnn_17
Δημοσ.

Αναρωτιέμαι αν έχεις τρέξει τον κώδικα, αν όντως είναι όπως τον έχεις γράψει εδώ.

 

Επίσης :

α) Γιατί δεν χρησιμοποιείς Gridview?

 

β) txtName = new Label();

txtName = new TextBox();

(κάπου κάνεις λάθος)

 

γ) Επίσης δεν βλέπω πουθενά να ορίζεις το όνομα του CONTROL textbox. Φυσικά και δεν θα μπορείς να δεις τα δεδομένα τους. Το όνομά τους το έχεις αφήσει στην τύχη του server που θα κάνει το rendering. Αν έρθω εγώ να συντηρήσω στην σελίδα και προσθέσω άλλο ένα textbox με default όνομα στην αρχή της σελίδας, το πρόγραμμά σου δεν θα δουλέψει σύμφωνα με το σκεπτικό σου.

 

 

δ) Προσθέτεις ένα placeholder ανά textbox στο panel!!!!!

Ο λόγος; (Γιατί είναι μέσα στο loop).

 

Και είμαι κριτικός, γιατί βλέπω ότι προσπαθείς. Οπότε θέλεις να μάθεις. Πράγμα το οποίο δεν έχουν κάνει οι καθηγητές σου....

Δημοσ.

Αναρωτιέμαι αν έχεις τρέξει τον κώδικα, αν όντως είναι όπως τον έχεις γράψει εδώ.

 

Επίσης :

α) Γιατί δεν χρησιμοποιείς Gridview?

 

β) txtName = new Label();

txtName = new TextBox();

(κάπου κάνεις λάθος)

 

γ) Επίσης δεν βλέπω πουθενά να ορίζεις το όνομα του CONTROL textbox. Φυσικά και δεν θα μπορείς να δεις τα δεδομένα τους. Το όνομά τους το έχεις αφήσει στην τύχη του server που θα κάνει το rendering. Αν έρθω εγώ να συντηρήσω στην σελίδα και προσθέσω άλλο ένα textbox με default όνομα στην αρχή της σελίδας, το πρόγραμμά σου δεν θα δουλέψει σύμφωνα με το σκεπτικό σου.

 

 

δ) Προσθέτεις ένα placeholder ανά textbox στο panel!!!!!

Ο λόγος; (Γιατί είναι μέσα στο loop).

 

Και είμαι κριτικός, γιατί βλέπω ότι προσπαθείς. Οπότε θέλεις να μάθεις. Πράγμα το οποίο δεν έχουν κάνει οι καθηγητές σου....

 

Κοίτα ο κώδικας είναι πάνω απο 250 γραμμές γιαυτό δεν τον έβαλα όλο. Οπότε μου ξεφίγανε πραγματάκια χτες το βράδυ. Τα διόρθωσα σήμερα.

1) Gridview δεν ξέρω γιατί δεν χρησιμοποίησα. Πιθανός να είναι καλύτερη λύση αλλά είμαι αρχάριος ακόμα.

2),3) Στο κώδικα μου το είχα κάνει,έδω μου ξέφυγε γιατί ξανα έγραψα ένα κομάτι από το κώδικα.

4) Έχω πολλά Label και TextBox οπότε σκέφτικα να τα βάλω σε ένα PlaceHolder τη κάθε ομάδα ώστε στο τέλος στα Panel να βάλω μόνο το PlaceHolder. Επίσης χρησιμοποιώ και ενδιάμεσα html για τη στοίχηση των Controls. πχ

>laceHolder1.Controls.Add(new LiteralControl("<table>"));

όσο για το loop έχω ένα DropDownList με αριθμούς(στο πρόβλημα μου η επιλογή αντιστοιχεί στο πόσοι συγγραφείς υπαρχουν). οπότε για τον καθένα πρέπει να δημιουργήσω τα αντίστοιχα Control ώστε να εισάγει ο χρήστης τα στοιχεία τους. Οπότε το loop είναι

>for(i=0 i<authors; i++)

όπου στη μεταβλητή authors πέρνω την επιλογή από την DropDownList.

 

5)Στο τέλος πόσταρα ένα ενδεικτικό κώδικα για να εξηγήσω το λάθος μου

α) για να 'κλείσει' το post

β)γιατί μπορί να τύχει να ξανακάνει κάποιος το ίδιο λάθος οπότε θεώρησα καλό να υπάρχει (Παρόλο που το λάθος μου ήταν τελείως αψυχολόγητο και το λέω όσο πιο ευγενικά μπορώ :rolleyes: )

Δημοσ.

Φίλε μου ξεκινάς λάθος με τον προγραμματισμό.

 

Και καλό είναι να ξανασχεδιάσεις την όλη αρχιτεκτονική, παρά να προσπαθείς να την ράψεις όπως όπως. Σκέψου τον φόρτο εργασίας του server όταν έχεις 1000 άτομα ταυτόχρονα. 10,000 άτομα.

 

Επίσης με τον κώδικα που έγραψες προηγουμένως, δεν έχεις καταλάβει τι κάνουν αρκετά controls.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...