2010-06-06 8 views
1

Voici ce que j'ai. L'utilisateur saisit les valeurs dans des zones de texte (informations personnelles, etc.), puis appuie sur un bouton de sauvegarde. Les valeurs de ces zones de texte sont stockées dans une base de données SQL. Le problème que j'ai est que lors de la mise à jour de la base de données en utilisant les valeurs des zones de texte, la page s'actualise et les valeurs dans les zones de texte sont perdues (ou plutôt ils retournent aux valeurs qui sont déjà dans la base de données les données de la base de données sont chargées dans les zones de texte sur Page_Load).Mettre à jour la base de données SQL avec les valeurs des zones de texte

Lorsque je mets à jour la base de données en utilisant des valeurs stockées dans des variables, tout fonctionne correctement. Quel est le meilleur moyen de mettre à jour avec les valeurs des zones de texte?

Répondre

1

Utilisez asp:FormView et liez votre asp:TextBox avec les colonnes dont vous avez besoin.

Par exemple:

<asp:FormView runat="server" ID="FormView1" DataSourceID="SqlDataSource1"> 
    <InsertItemTemplate> 
     <table> 
      <tr> 
       <td> 
        <asp:TextBox runat="server" ID="txtFoo" Text='<%# Bind("foo") %>' /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <asp:TextBox runat="server" ID="txtBar" Text='<%# Bind("bar") %>' /> 
       </td> 
      </tr> 
     </table> 
    </InsertItemTemplate> 
</asp:FormView> 
<asp:SqlDataSource runat="server" ID="SqlDataSource1" InsertCommand="INSERT INTO table1 (foo, bar) VALUES (@foo, @bar)" ConnectionString="<%$ ConnectionStrings:MyConnStringNameFromWebConfig%>"> 
    <InsertParameters> 
     <asp:FormParameter Name="foo" FormField="foo" DbType="String" /> 
     <asp:FormParameter Name="bar" FormField="bar" DbType="String" /> 
    </InsertParameters> 
</asp:SqlDataSource> 

asp:FormView a un certain nombre de moments de comportement étrange, je serai heureux de partager mon expérience, s'il vous plaît remplir libre de poser vos questions

+0

pouvez-vous expliquer un peu plus s'il vous plaît? –

+0

@Sir juste une minute s'il vous plaît – abatishchev

1

On dirait que vous chargez les données dans Page_Load sans vérifier si la page est post-retour. Si tel est le cas, essayez ce qui suit:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     BindYouDataFromDB(); 
    } 
} 
+0

Salut, quand je fais cela bien que le datatable est rempli au chargement de la page quand je vais mettre à jour le datatable, il dit qu'il n'a pas de lignes? –

+0

Vous devez appeler la méthode Bind chaque fois que vous modifiez les données et que vous devez actualiser les données de la base de données. – Thea

Questions connexes