C# DetailsView-ItemUpdate中的值未更改
我将DetailsView绑定到一个对象。调用C# DetailsView-ItemUpdate中的值未更改,c#,asp.net,.net,webforms,C#,Asp.net,.net,Webforms,我将DetailsView绑定到一个对象。调用itemUpdate时(当我单击更新时)OldValues为空且NewValues包含旧值(与更新前相同) 代码隐藏: private Customer customer; protected void Page_Load(object sender, EventArgs e) { using (var context = new CustomersContext()) { customer = context.L
itemUpdate
时(当我单击更新时)OldValues
为空且NewValues
包含旧值(与更新前相同)
代码隐藏:
private Customer customer;
protected void Page_Load(object sender, EventArgs e)
{
using (var context = new CustomersContext())
{
customer = context.Logins.First();
}
CustomerDetailsView.DataSource = new List<Customer>() { customer };
CustomerDetailsView.DataBind();
}
protected void CustomerDetailsView_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{
// e.OldValues.Count == 0
// e.NewValues["FirstName"] - is same as taken from database
}
私人客户;
受保护的无效页面加载(对象发送方、事件参数e)
{
使用(var context=new CustomersContext())
{
customer=context.Logins.First();
}
CustomerDetailsView.DataSource=新列表(){customer};
CustomerDetailsView.DataBind();
}
受保护的无效CustomerDetailsView\u项目更新(对象发送者,DetailsViewUpdateEventArgs e)
{
//e.OldValues.Count==0
//e.NewValues[“FirstName”]-与从数据库中获取的相同
}
请参见以下答案:
似乎只有在使用绑定到数据源控件的DataSourceID属性时,此操作才有效。愚蠢的我,每次重新加载页面时,我都在设置新的数据源,即使该页面已回发 应该是:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
using (var context = new CustomersContext())
{
customer = context.Logins.First();
}
CustomerDetailsView.DataSource = new List<Customer>() { customer };
CustomerDetailsView.DataBind();
}
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
使用(var context=new CustomersContext())
{
customer=context.Logins.First();
}
CustomerDetailsView.DataSource=新列表(){customer};
CustomerDetailsView.DataBind();
}
}
看不到旧值,但新值看起来正确。他写道“新值没问题”这些是我最关心的值。我宁愿不使用数据源控件,也不太关心旧值。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
using (var context = new CustomersContext())
{
customer = context.Logins.First();
}
CustomerDetailsView.DataSource = new List<Customer>() { customer };
CustomerDetailsView.DataBind();
}
}