使用文本框中的值更新SQL数据库

时间:2010-06-06 10:34:35

标签: c# .net asp.net sql-server

这就是我所拥有的。用户在文本框(个人信息等)中输入值,然后按保存更改按钮。这些文本框中的值存储在SQL数据库中。

我遇到的问题是,当使用文本框中的值更新数据库时,页面会刷新并且文本框中的值会丢失(或者更确切地说,它们将返回到数据库中已存在的值作为数据从数据库加载到Page_Load上的文本框中。

当我使用存储在变量中的值更新数据库时,一切正常。使用文本框中的值更新的最佳方法是什么?

2 个答案:

答案 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();
    }
}