Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DetailsView-ItemUpdate中的值未更改_C#_Asp.net_.net_Webforms - Fatal编程技术网

C# DetailsView-ItemUpdate中的值未更改

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

我将DetailsView绑定到一个对象。调用
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();
    }
}