Sir Graystar
Sir Graystar

Reputation: 703

Update SQL database with values from text boxes

Here's what I have. User enters values into text boxes (personal information etc.) and then presses a save changes button. The values in these text boxes get stored in an SQL database.

The problem I have is that when updating the database using the values from the text boxes, the page refreshes and the values in the text boxes are lost (or rather they return to the values that are already in the database as the data from the database is loaded into the text boxes on Page_Load).

When I update the database using values stored in variables it all works fine. What is the best way to update with the values from the text boxes?

Upvotes: 1

Views: 1060

Answers (2)

abatishchev
abatishchev

Reputation: 100368

Use asp:FormView and your bind your asp:TextBox with columns you need.

For example:

<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 has a number of strange behavior moments, I will be happy to share my experience, please fill free to ask your questions

Upvotes: 1

Thea
Thea

Reputation: 8067

It sounds like that you are loading the data in Page_Load without checking if the page is post back. If this is the case try the following:

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

Upvotes: 1

Related Questions