2009-12-21 5 views
0

J'essaie d'amener les utilisateurs à entrer certains détails dans une zone de texte dans Form1 et obtenir l'entrée validée par rapport à la base de données. Si l'entrée est correcte, form2 se charge avec d'autres texboxes, y compris celle dans laquelle elles ont été entrées. Cependant, je ne veux pas qu'ils fassent des changements dans les zones de texte dans lesquelles ils ont entré des valeurs auparavant, et ils ne devraient pas non plus devoir entrer de nouveau les valeurs.Passage de valeur de zones de texte dans un formulaire Web à texboxes dans un autre formulaire Web

Comment puis-je obtenir les valeurs dans les zones de texte pour passer de Form1 à Form2? Le code ci-dessous montre ce que nous avons fait avec les deux formes, mais la seconde forme affiche les éléments dans les zones de texte lorsque le formulaire est chargé.

première forme

Button1_Click vide protégé (expéditeur d'objet, EventArgs e) { chaîne strConn;

 strConn = "Provider=MIcrosoft.Jet.OLEDB.4.0;data Source=" + 
      Server.MapPath("App_Data/test.mdb"); 

     OleDbConnection mDB = new OleDbConnection(strConn); 
     mDB.Open(); 

     prodSnStr = pSnTextBox.Text; 
     purDate = Convert.ToDateTime(purDateTextBox.Text); 
     string dateStr = purDateTextBox.Text; 

     productClass aProduct = new productClass(); 

     if (aProduct.Prods(mDB, prodSnStr, purDate)) 
     { 
      Session["ProdSn"] = pSnTextBox.Text; 
      Session["PurDate"] = purDateTextBox.Text.ToString(); 

      Response.Redirect("Warranty.aspx"); 

     } 
     else 
     { 
      //error message 
     } 
    } 

forment deux

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      if (Request.QueryString["ProdSn"] != "") 
      { 
       pSNoTextBox.Text = Request.QueryString["ProdSn"]; 

       if (Request.QueryString["PurDate"] != "") 
       { 
        dateTextBox.Text = Request.QueryString["PurDate"]; 
       } 
       else 
       { 
        //error message to display 
       } 

      } 
      else 
      { 
       //error message to display 
      } 
     } 

attente eagaerly pour vos responses..thanks ..

Répondre

-1

votre page asp.net doit afficher vos données à la deuxième page. il suffit de définir l'attribut de vos boutons PostBackUrl.

<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="target.aspx" /> 

Je ne comprends pas lorsque vous compliquez les choses. Lorsque les utilisateurs cliquent sur le bouton, toutes les données seront envoyées à votre page cible.

+0

très agréable ... mais comment faire u passer les éléments envoyés aux contrôles sur le formulaire? – Selase

+0

vous pouvez lire les valeurs de la collection de formulaire comme Request [controlsclientid] et affecter des valeurs aux contrôles. –

2

Dans votre code, vous mettez les valeurs sur une page à la session:

Session["ProdSn"] = pSnTextBox.Text; 
    Session["PurDate"] = purDateTextBox.Text.ToString(); 

Cependant, vous essayez de les lire sur la 2ème page de la collection Demande:

if (Request.QueryString["ProdSn"] != "") 
    { 
     pSNoTextBox.Text = Request.QueryString["ProdSn"]; 
    if (Request.QueryString["PurDate"] != "") 
    { 
     dateTextBox.Text = Request.QueryString["PurDate"]; 
    } 

Cela n'a aucun sens. Si vous souhaitez utiliser la session, vous devez également extraire les valeurs de l'objet de session.

Personnellement, je voudrais regarder dans Cross Page postbacks et Server.Transfer combiné avec Page.PreviousPage. Assurez-vous de ne pas définir le paramètre preserveForm sur false si vous utilisez Server.Transfer.

+1

C'était génial .... tant d'options à choisir ... génial – Selase

+0

Pas de soucis. J'espère que cela aide. – RichardOD

0

Vous ne transmettez pas vos valeurs en tant que chaîne de requête. Si vous étiez votre Response.Redirect ressemblerait à ceci:

Response.Redirect("Warranty.aspx?ProdSn=something&PurDate=something"); 

Au lieu de cela, puisque vous enregistrez ces valeurs dans une variable de session essayez ceci:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     if (Session["ProdSn"] != "") 
     { 
      pSNoTextBox.Text = Session["ProdSn"]; 

      if (Session["PurDate"] != "") 
      { 
       dateTextBox.Text = Session["PurDate"]; 
      } 
      else 
      { 
       //error message to display 
      } 

     } 
     else 
     { 
      //error message to display 
     } 
    } 
0

Dans le Button_Click de la première forme je suis entré dans ce code

Session ["ProdSn"] = pSnTextBox.Text; Session ["PurDate"] = purDateTextBox.Text.ToString();

Response.Redirect ("Warranty.aspx? ProdSn =" + Server.UrlEncode (pSnTextBox.Text) + "& PurDate =" + serveur.UrlEncode (purDateTextBox.Text));

puis en cas Page_load de la seconde forme je l'ai fait ..

valeur de chaîne = demande [ « ProdSn »]; string value1 = Demande ["PurDate"]; pSnTextBox.Text = valeur; purDateTextBox.Text = valeur1;

sans tracas durable .... facile et travailler .... parfaitement

Merci pour ya'11 aider .... suis très reconnaissant

Questions connexes