如何在按钮单击时将对DataView的更改保存到数据库?

时间:2015-07-06 15:55:14

标签: c# asp.net dataview

我是Asp.net的新手,我试图找出如何以编程方式更新SqlDataSource中的值。这是我的按钮点击监听器:

        protected void ApproveLoanButton_Click(object sender, EventArgs e)
    {
        DataView dv = (DataView)DetailsSqlDataSource.Select(DataSourceSelectArguments.Empty);
        dv.AllowEdit = true;
        using (var dt = dv.ToTable())
        {
            var oldValue = dt.Rows[0]["IsApproved"].ToString();
            dt.Rows[0]["IsApproved"] = true;
            var newValue = dt.Rows[0]["IsApproved"].ToString();
            dt.AcceptChanges();
            GridView1.DataBind();
            DetailsView1.DataBind();
        }         

    }

oldValue为false且newValue为true所以我正在更改该值,但在调用AcceptChanges()时它不会保存到数据库中。我在这做错了什么?我已经花了好几个小时了。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我没有你的 DetailsS​​qlDataSource ,或者你的数据库结构是什么,但你显然需要编写一些Save和Read方法。

如果你这样做,你会有这样的事情:

CONVERT(INT,CONVERT(CHAR,@Date,112))

您需要修改这些才能工作,但这里有一个示例:

    protected void ApproveLoanButton_Click(object sender, EventArgs e)
    {
        DataView dv = (DataView)DetailsSqlDataSource.Select(DataSourceSelectArguments.Empty);
        dv.AllowEdit = true;
        using (var dt = dv.ToTable())
        {
            var oldValue = dt.Rows[0]["IsApproved"].ToString();
            if (-1 < SaveApproved((int)dt.Rows[0]["ID"], true))
            {
                dt.Rows[0]["IsApproved"] = true;
                var newValue = dt.Rows[0]["IsApproved"].ToString();
                dt.AcceptChanges();
                DetailsSqlDataSource = GetTable();
                GridView1.DataBind();
                DetailsView1.DataBind();
            }
        }

    }