我是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()时它不会保存到数据库中。我在这做错了什么?我已经花了好几个小时了。谢谢你的帮助!
答案 0 :(得分:1)
我没有你的 DetailsSqlDataSource ,或者你的数据库结构是什么,但你显然需要编写一些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();
}
}
}