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 alread开发者_如何学Pythony 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?
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
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();
}
}
精彩评论