2014-10-17 5 views
1

Мой вопрос очень прост. Я хочу получить вновь вставленные значения строки и хочу соответствующим образом обновить GridView и мой источник данных.Добавление новой строки/записи в DevExpress AspxGridView, привязанный к DataSource

New Record

Как показано в выделенной области в изображении, я хочу, чтобы получить эту Email и другие поля в коде позади файла. Я использую WebForms/VB.NET.

Это мой код aspx.

<dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" EnableTheming="True" Theme="DevEx" 
     OnDataBinding="ASPxGridView1_DataBinding" 
     OnRowUpdating="ASPxGridView1_RowUpdating" 
     OnRowInserting="ASPxGridView1_RowInserting" 
     OnRowInserted="ASPxGridView1_RowInserted" 
     > 
     <Columns> 
      <dx:GridViewCommandColumn VisibleIndex="0"> 
       <EditButton Visible="True"/> 
       <NewButton Visible="True"/> 
       <DeleteButton Visible="True" /> 
      </dx:GridViewCommandColumn> 
      <dx:GridViewDataColumn FieldName="Email" VisibleIndex="2" Name="Email"> 
       <EditFormSettings Caption="Email" /> 
      </dx:GridViewDataColumn> 
      <dx:GridViewDataColumn FieldName="FirstName" VisibleIndex="3" Name="FirstName" /> 
      <dx:GridViewDataColumn FieldName="LastName" VisibleIndex="4" Name="LastName" /> 
      <dx:GridViewDataColumn FieldName="Password" VisibleIndex="5" Name="Password" /> 
      <dx:GridViewDataColumn FieldName="RetryCount" VisibleIndex="6" Name="RetryCount" /> 
      <dx:GridViewDataColumn FieldName="MaxRetryCount" VisibleIndex="7" Name="MaxRetryCount" /> 
     </Columns> 
     <SettingsPopup> 
      <EditForm Width="600" /> 
     </SettingsPopup> 
    </dx:ASPxGridView> 

И это мой код.

Protected Sub ASPxGridView1_RowInserting(sender As Object, e As DevExpress.Web.Data.ASPxDataInsertingEventArgs) 
    Dim gridView As ASPxGridView = CType(sender, ASPxGridView) 

    ' What to write here??? 
    e.NewValues("Email") 'doesn't give anything 
    e.NewValues("Email") = "SomeEmail" 'It is also not working 

End Sub 

Эта ссылка запутанная: Inserting new Row.

примечание что я не использую DataTable.

+0

то как вы предоставляете источник данных к сетке. вы должны иметь возможность получать значения в событии RowInserting. –

+0

Использование сущности framework. –

ответ

0

Как я подозреваю, у вас нет чего-то реализации с Entity Рамка AspxGridView. Вы назначаете источник данных EnitiyFramework в сетку. Может быть, вы просто создаете источник данных и назначаете ему список .

Предлагаю вам ознакомиться с приведенными ниже примерами KB и примерами. Это даст вам знать, как реализовать общие сценарии при использовании ASPxGridView, связанных с EntityDataSource/Entity Framework.

Ссылки:

How to implement common scenarios when using ASPxGridView bound with EntityDataSource/Entity Framework
How to utilize CRUD operations within ASPxGridView bound with LinqDataSource when using Anonymous Types
ASPxGridView bound to EntityFramework - How t update data in several tables

Согласно документации, вы демонстративно получить значения на событие RowInserting из словаря e.NewValues.

Руководство CRUD операции:

1) Установка: - Обрабатывать событие ASPxGridView.RowInserting;
- создать экземпляр DataContext;
- Создайте новый DataItem и заполните его свойства из словаря e.NewValues;
- Добавить новый DataItem в соответствующую таблицу;
- Прислать изменения;
- Установите для свойства eventArgs e.Cancel значение "true", чтобы отменить операцию вставки;
- Вызовите метод ASPxGridView.CancelEdit, чтобы закрыть EditForm.

0

Вы можете попробовать это:

  1. Закройте форму редактирования
  2. Reload данные о aspxgridview (Это освежит как в источник данных, как DataGrid):

Я помещу это в C#, но концепция одинаков:

protected void dxGvCatalog_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e) 
{  
    // Here your code to save 

    // Close edit form 
    dxGvCatalog.CancelEdit(); 
    // reload Grid 
    reloadAspxGridView(); 
} 

public void reloadAspxGridView() 
{ 
    dxGvCatalog.DataSource = Class.ConsultAll();  // Change this to your data source 
    dxGvCatalog.Enabled = true; 
    dxGvCatalog.Visible = true; 
    dxGvCatalog.DataBind(); 
} 
Смежные вопросы