Asp.net DetailsView图像更新问题

Asp.net DetailsView图像更新问题,asp.net,image,file-upload,detailsview,findcontrol,Asp.net,Image,File Upload,Detailsview,Findcontrol,我有用户信息(姓名、电子邮件、图片)的详细视图。可以编辑DetailsView控件。 值来自数据库 protected void DVUserInfoShow_ItemUpdating(object sender, DetailsViewUpdateEventArgs e) { FileUpload EditAvatar = (FileUpload)DVUserInfoShow.FindControl("EditAvatar"); if (EditAvatar.HasFil

我有用户信息(姓名、电子邮件、图片)的详细视图。可以编辑DetailsView控件。 值来自数据库

 protected void DVUserInfoShow_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{


    FileUpload EditAvatar = (FileUpload)DVUserInfoShow.FindControl("EditAvatar");
    if (EditAvatar.HasFile)
    {
        string image_path = "~/images/user_images/" + EditAvatar.FileName;
        EditAvatar.SaveAs(Server.MapPath(image_path));
        e.NewValues["Avatar"] = EditAvatar.FileName;

    }

    else
    {
        e.NewValues["Avatar"] = e.OldValues["Avatar"];
    }



}

问题在于e.NewValues[“Avatar”]=e.OldValues[“Avatar”],当用户更新其姓名和电子邮件时,图片值设置为空。而那个代码不起作用。我做错了什么?

OldValues
集合仅在
DetailView
与声明性
DataSource
绑定时可用,否则
OldValues
集合将在
ItemUpadting
事件中包含
null


您可以做的是在
DVUserInfoShow\u ItemUpdating
事件中,从数据库获取当前数据并保存在一些局部变量中。

OldValues
集合仅在
DetailView
与声明性
数据源绑定时可用,否则,
OldValues
集合将在
ItemUpadting
事件中包含
null


您可以做的是在
DVUserInfoShow\u itemUpdate
事件中,从数据库获取当前数据并保存在一些局部变量中。

现在我知道了答案,我使用了声明性数据源,但它无论如何都不起作用。。问题是我没有设置DataKeyName..现在我知道答案了,我使用了声明性DataSource,但它无论如何都不起作用。。问题是我没有设置DataKeyName。。