这就是我所拥有的。用户在文本框(个人信息等)中输入值,然后按保存更改按钮。这些文本框中的值存储在SQL数据库中。
我遇到的问题是,当使用文本框中的值更新数据库时,页面会刷新并且文本框中的值会丢失(或者更确切地说,它们将返回到数据库中已存在的值作为数据从数据库加载到Page_Load上的文本框中。
当我使用存储在变量中的值更新数据库时,一切正常。使用文本框中的值更新的最佳方法是什么?
答案 0 :(得分:1)
使用asp:FormView
并将asp:TextBox
与您需要的列绑定。
例如:
<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
有许多奇怪的行为时刻,我很乐意分享我的经验,请随意填写您的问题
答案 1 :(得分:1)
听起来您正在加载Page_Load中的数据而不检查页面是否回发。如果是这种情况,请尝试以下方法:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindYouDataFromDB();
}
}