ASPxGridView.RowInserted Event
Fires after a new row has been added to the ASPxGridView.
Namespace: DevExpress.Web
Assembly: DevExpress.Web.v18.2.dll
Declaration
public event ASPxDataInsertedEventHandler RowInserted
Public Event RowInserted As ASPxDataInsertedEventHandler
Event Data
The RowInserted event's data class is ASPxDataInsertedEventArgs.
The following properties provide information specific to this event:
Property |
Description |
AffectedRecords |
Gets the number of records affected by the update operation.
|
Exception |
Gets the exception (if any) that was raised during the update operation.
|
ExceptionHandled |
Gets or sets whether an exception raised during the update operation was handled in the event handler.
|
NewValues |
Gets a dictionary that contains the values of the non-key field name/value pairs in the row to be inserted.
|
End-users can create new rows by clicking the New command. To create rows in code, use the ASPxGridView.AddNewRow method. To save the newly created row, end-users must click the Update command.
To cancel the insert operation, handle the ASPxGridView.RowInserting event.
Example
To focus the newly inserted row, it is necessary to know the keyValue of this row. You can get the value by handling the ASPxGridView.RowInserted event, which is raised after a new row has been added to the ASPxGridView's data source.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="DevExpress.Web.v15.1, Version=15.1.2.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Xpo.v15.1, Version=15.1.2.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Xpo" TagPrefix="dx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>ASPxGridView - How to focus newly inserted rows</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<dx:ASPxGridView ID="grid" runat="server" AutoGenerateColumns="False" DataSourceID="XpoDataSource1"
KeyFieldName="Oid" OnRowInserted="grid_RowInserted">
<SettingsPager PageSize="5" />
<SettingsBehavior AllowFocusedRow="true" />
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0" ShowEditButton="True" ShowNewButton="True"/>
<dx:GridViewDataTextColumn FieldName="Oid" ReadOnly="True" VisibleIndex="1" SortIndex="0"
SortOrder="Ascending">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="CompanyName" VisibleIndex="3">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="ContactName" VisibleIndex="4">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Country" VisibleIndex="5">
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
<dx:XpoDataSource ID="XpoDataSource1" runat="server" TypeName="Customer">
</dx:XpoDataSource>
</div>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using DevExpress.Xpo;
using DevExpress.Xpo.DB;
using DevExpress.Xpo.Metadata;
/// <summary>
/// Summary description for XpoHelper
/// </summary>
public static class XpoHelper {
static XpoHelper () {
CreateDefaultObjects();
}
public static Session GetNewSession () {
return new Session(DataLayer);
}
public static UnitOfWork GetNewUnitOfWork () {
return new UnitOfWork(DataLayer);
}
private readonly static object lockObject = new object();
static IDataLayer fDataLayer;
static IDataLayer DataLayer {
get {
if (fDataLayer == null) {
lock (lockObject) {
fDataLayer = GetDataLayer();
}
}
return fDataLayer;
}
}
private static IDataLayer GetDataLayer () {
XpoDefault.Session = null;
InMemoryDataStore ds = new InMemoryDataStore();
XPDictionary dict = new ReflectionDictionary();
dict.GetDataStoreSchema(typeof(Customer).Assembly);
return new ThreadSafeDataLayer(dict, ds);
}
static void CreateDefaultObjects () {
using (UnitOfWork uow = GetNewUnitOfWork()) {
Customer cust = new Customer(uow);
cust.CompanyName = "Alfreds Futterkiste";
cust.ContactName = "Maria Anders";
cust.Country = "Germany";
cust = new Customer(uow);
cust.CompanyName = "Ana Trujillo Emparedados y helados";
cust.ContactName = "Ana Trujillo";
cust.Country = "Mexico";
cust = new Customer(uow);
cust.CompanyName = "Antonio Moreno Taquería";
cust.ContactName = "Antonio Moreno";
cust.Country = "Mexico";
cust = new Customer(uow);
cust.CompanyName = "Blondel père et fils";
cust.ContactName = "Frédérique Citeaux";
cust.Country = "France";
cust = new Customer(uow);
cust.CompanyName = "Berglunds snabbköp";
cust.ContactName = "Christina Berglund";
cust.Country = "Sweden";
cust = new Customer(uow);
cust.CompanyName = "Bottom-Dollar Markets";
cust.ContactName = "Elizabeth Lincoln";
cust.Country = "Canada";
uow.CommitChanges();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DevExpress.Xpo;
using DevExpress.Web.Data;
using System.Collections;
public partial class _Default : System.Web.UI.Page {
UnitOfWork uof = XpoHelper.GetNewUnitOfWork();
protected void Page_Init (object sender, EventArgs e) {
XpoDataSource1.Session = uof;
}
protected void grid_RowInserted (object sender, ASPxDataInsertedEventArgs e) {
object newKey = null;
if (e.AffectedRecords == 1) {
ICollection objects = uof.GetObjectsToSave();
if (objects != null && objects.Count == 1) {
IEnumerator enumeration = objects.GetEnumerator();
enumeration.MoveNext();
Customer obj = (Customer)enumeration.Current;
uof.CommitChanges();
newKey = obj.Oid;
}
}
grid.FocusedRowIndex = grid.FindVisibleIndexByKeyValue(newKey);
}
}
using System;
using DevExpress.Xpo;
public class Customer : XPObject {
public Customer (Session session)
: base(session) { }
public override void AfterConstruction () {
base.AfterConstruction();
}
string _CompanyName;
public string CompanyName {
get { return _CompanyName; }
set { SetPropertyValue("CompanyName", ref _CompanyName, value); }
}
string _ContactName;
public string ContactName {
get { return _ContactName; }
set { SetPropertyValue("ContactName", ref _ContactName, value); }
}
string _Country;
public string Country {
get { return _Country; }
set { SetPropertyValue("Country", ref _Country, value); }
}
}
Imports Microsoft.VisualBasic
Imports System
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports DevExpress.Xpo
Imports DevExpress.Xpo.DB
Imports DevExpress.Xpo.Metadata
''' <summary>
''' Summary description for XpoHelper
''' </summary>
Public NotInheritable Class XpoHelper
Private Sub New()
End Sub
Shared Sub New()
CreateDefaultObjects()
End Sub
Public Shared Function GetNewSession() As Session
Return New Session(DataLayer)
End Function
Public Shared Function GetNewUnitOfWork() As UnitOfWork
Return New UnitOfWork(DataLayer)
End Function
Private ReadOnly Shared lockObject As Object = New Object()
Private Shared fDataLayer As IDataLayer
Private Shared ReadOnly Property DataLayer() As IDataLayer
Get
If fDataLayer Is Nothing Then
SyncLock lockObject
fDataLayer = GetDataLayer()
End SyncLock
End If
Return fDataLayer
End Get
End Property
Private Shared Function GetDataLayer() As IDataLayer
XpoDefault.Session = Nothing
Dim ds As New InMemoryDataStore()
Dim dict As XPDictionary = New ReflectionDictionary()
dict.GetDataStoreSchema(GetType(Customer).Assembly)
Return New ThreadSafeDataLayer(dict, ds)
End Function
Private Shared Sub CreateDefaultObjects()
Using uow As UnitOfWork = GetNewUnitOfWork()
Dim cust As New Customer(uow)
cust.CompanyName = "Alfreds Futterkiste"
cust.ContactName = "Maria Anders"
cust.Country = "Germany"
cust = New Customer(uow)
cust.CompanyName = "Ana Trujillo Emparedados y helados"
cust.ContactName = "Ana Trujillo"
cust.Country = "Mexico"
cust = New Customer(uow)
cust.CompanyName = "Antonio Moreno Taquería"
cust.ContactName = "Antonio Moreno"
cust.Country = "Mexico"
cust = New Customer(uow)
cust.CompanyName = "Blondel père et fils"
cust.ContactName = "Frédérique Citeaux"
cust.Country = "France"
cust = New Customer(uow)
cust.CompanyName = "Berglunds snabbköp"
cust.ContactName = "Christina Berglund"
cust.Country = "Sweden"
cust = New Customer(uow)
cust.CompanyName = "Bottom-Dollar Markets"
cust.ContactName = "Elizabeth Lincoln"
cust.Country = "Canada"
uow.CommitChanges()
End Using
End Sub
End Class
Imports Microsoft.VisualBasic
Imports System
Imports DevExpress.Xpo
Public Class Customer
Inherits XPObject
Public Sub New(ByVal session As Session)
MyBase.New(session)
End Sub
Public Overrides Sub AfterConstruction()
MyBase.AfterConstruction()
End Sub
Private _CompanyName As String
Public Property CompanyName() As String
Get
Return _CompanyName
End Get
Set(ByVal value As String)
SetPropertyValue("CompanyName", _CompanyName, value)
End Set
End Property
Private _ContactName As String
Public Property ContactName() As String
Get
Return _ContactName
End Get
Set(ByVal value As String)
SetPropertyValue("ContactName", _ContactName, value)
End Set
End Property
Private _Country As String
Public Property Country() As String
Get
Return _Country
End Get
Set(ByVal value As String)
SetPropertyValue("Country", _Country, value)
End Set
End Property
End Class
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports DevExpress.Xpo
Imports DevExpress.Web.Data
Imports System.Collections
Partial Public Class _Default
Inherits System.Web.UI.Page
Private uof As UnitOfWork = XpoHelper.GetNewUnitOfWork()
Protected Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
XpoDataSource1.Session = uof
End Sub
Protected Sub grid_RowInserted(ByVal sender As Object, ByVal e As ASPxDataInsertedEventArgs)
Dim newKey As Object = Nothing
If e.AffectedRecords = 1 Then
Dim objects As ICollection = uof.GetObjectsToSave()
If objects IsNot Nothing AndAlso objects.Count = 1 Then
Dim enumeration As IEnumerator = objects.GetEnumerator()
enumeration.MoveNext()
Dim obj As Customer = CType(enumeration.Current, Customer)
uof.CommitChanges()
newKey = obj.Oid
End If
End If
grid.FocusedRowIndex = grid.FindVisibleIndexByKeyValue(newKey)
End Sub
End Class
<%@ Page Language="vb" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ Register Assembly="DevExpress.Web.v15.1, Version=15.1.2.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Xpo.v15.1, Version=15.1.2.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Xpo" TagPrefix="dx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>ASPxGridView - How to focus newly inserted rows</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<dx:ASPxGridView ID="grid" runat="server" AutoGenerateColumns="False" DataSourceID="XpoDataSource1"
KeyFieldName="Oid" OnRowInserted="grid_RowInserted">
<SettingsPager PageSize="5" />
<SettingsBehavior AllowFocusedRow="true" />
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0" ShowEditButton="True" ShowNewButton="True"/>
<dx:GridViewDataTextColumn FieldName="Oid" ReadOnly="True" VisibleIndex="1" SortIndex="0"
SortOrder="Ascending">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="CompanyName" VisibleIndex="3">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="ContactName" VisibleIndex="4">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Country" VisibleIndex="5">
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
<dx:XpoDataSource ID="XpoDataSource1" runat="server" TypeName="Customer">
</dx:XpoDataSource>
</div>
</form>
</body>
</html>
See Also