2015-12-18 3 views
1

У меня есть DetailsView, привязанный к одному объекту. Когда вызывается ItemUpdating (когда я нажимаю обновление) OldValues пуст и NewValues содержит старые значения (такие же, как и до обновления).DetailsView - Значения не меняются в ItemUpdating

<asp:DetailsView ID="CustomerDetailsView" runat="server" 
    DefaultMode="Edit" 
    AutoGenerateRows="false" 
    OnItemUpdating="CustomerDetailsView_ItemUpdating" 
    > 
    <Fields> 
     <asp:BoundField DataField="LastName" HeaderText="Last name" ReadOnly="True" /> 
     <asp:BoundField DataField="FirstName" HeaderText="First name" ReadOnly="True" /> 
     <%-- Other fields ... --%> 
     <asp:CommandField ShowEditButton="true" /> 
    </Fields> 
</asp:DetailsView> 

код позади:

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 
} 

ответ

0

Глупо меня, я устанавливал новый DataSource каждый раз, когда страница была перезагружена, даже если она была обратной.

Должно быть:

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(); 
    } 
} 

Не можете увидеть OldValues ​​но NewValues ​​выглядит правильно.

2

Смотрите этот ответ: OldValues collection in event "ItemUpdating" of DetailsView is always empty

Оказывается, что это работает только если вы используете свойство DataSourceID, связанный с элементом управления источником данных.

+0

Он пишет, что «NewValues ​​в порядке» - это ценности, которые мне больше всего нравятся. Я бы предпочел не использовать контроль источника данных, и я не очень забочусь о OldValues. – Szel

Смежные вопросы