2010-10-31 6 views
1

J'ai une page asp.net avec un datalist avec une zone de texte et un bouton dessus, à la page charger la zone de texte contient du texte, si je change le texte et appuyez sur le bouton le texte ne pas être mis à jour.La valeur de la zone de texte n'est pas mise à jour

Qu'est-ce que je fais mal?

{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     DataTable table = CategoryAccess.GetProducts(); 

     ProductList.DataSource = table; 
     ProductList.DataBind(); 
    } 
} 

protected void btn_Click(object sender, EventArgs e) 
{ 
    string Name = textbox.Text; 

    CategoryAccess.UpdateProducts(Name); 
} 
} 
+0

Y at-il un code supplémentaire manquant ici. Définissez-vous explicitement le texte de la zone de texte. Si tel est le cas, les modifications seront effacées au moment de l'événement btn_Click. – brumScouse

+0

Je suis un peu perdu ici, pouvez-vous montrer le code .aspx et où sont les liens categoryaccess? une table sql ou quoi? – xandy

+0

J'ai fait le code plus court pour le rendre facile à voir, il doit être ici le problème est, il n'y a pas de problème avec le SQL. – Nicklas

Répondre

0

Essayez d'ajouter EnableViewState propriété dans votre contrôle TextBox et définissez la valeur true.

par exemple.

<asp:TextBox ID="textBox1" 
      EnableViewState="true" 
      MaxLength="25" 
      runat="server"/> 

ou vous pouvez le faire programatically:

protected void Page_Load(object sender, EventArgs e) 
{ 
    textBox1.EnableViewState = true; 
} 
+1

Travail de base, si je change: textbox.text = "bonjour"; chaîne Nom = textbox.Text; la valeur est mise à jour pour bonjour. C'est comme si la zone de texte indiquait que le texte était en train de changer. – Nicklas

0

Vous devez bing à nouveau les nouvelles données ...

protected void btn_Click(object sender, EventArgs e) 
{ 
    string Name = textbox.Text; 

    // you update with the new parametre 
    CategoryAccess.UpdateProducts(Name); 

    // you get the new data 
    DataTable table = CategoryAccess.GetProducts(); 

    // and show it 
    ProductList.DataSource = table; 
    ProductList.DataBind(); 
} 
+0

Toujours la même chose, la valeur de la base de données est toujours la même, même si je montre la nouvelle valeur sur la page. Je n'ai pas mentionné que je ne peux pas voir la zone de texte à l'intérieur de la datalist, car elle est dans un datalist donc j'utilise ceci pour obtenir la valeur de textbox: foreach (DataListItem di dans ProductList.Items) { textbox.Text = (((TextBox) (di.FindControl ("textbox"))). Texte); } – Nicklas

1

J'ai eu le même problème. J'ai trouvé que je mets textbox.text = "xxx" dans Page_Load() mais en dehors de if(!ispostback).

Questions connexes