It shows how to insert, edit and delete data in a data table by ASPxGridView. The data table and the
grid are created at runtime.
public partial class _Default : System.Web.UI.Page {
private DataTable dataTable;
protected void Page_Load(object sender, EventArgs e) {
CreateGrid();
}
private DataTable CustomDataSourse {
get {
if (dataTable != null)
return dataTable;
dataTable = ViewState["CustomTable"] as DataTable;
if (dataTable != null)
return dataTable;
dataTable = new DataTable("CustomDTable");
dataTable.Columns.Add("Id", typeof(Int32));
dataTable.PrimaryKey = new DataColumn[] { dataTable.Columns[0] };
dataTable.Columns.Add("Data", typeof(string));
dataTable.Rows.Add(0, "Data1");
dataTable.Rows.Add(1, "Data2");
dataTable.Rows.Add(2, "Data3");
dataTable.Rows.Add(3, "Data4");
dataTable.Rows.Add(4, "Data5");
ViewState["CustomTable"] = dataTable;
return dataTable;
}
}
protected void grid_DataBinding(object sender, EventArgs e) {
(sender as ASPxGridView).DataSource = CustomDataSourse;
}
protected void grid_DataBound(object sender, EventArgs e) {
ASPxGridView g = sender as ASPxGridView;
for (int i = 0; i < g.Columns.Count; i++) {
GridViewDataTextColumn c = g.Columns[i] as GridViewDataTextColumn;
if (c == null)
continue;
c.PropertiesTextEdit.ValidationSettings.RequiredField.IsRequired = true;
}
}
protected void grid_RowDeleting(object sender, ASPxDataDeletingEventArgs e) {
int id = (int)e.Keys[0];
DataRow dr = CustomDataSourse.Rows.Find(id);
dataTable.Rows.Remove(dr);
ASPxGridView g = sender as ASPxGridView;
UpdateData(g);
e.Cancel = true;
}
protected void grid_RowUpdating(object sender, ASPxDataUpdatingEventArgs e) {
int id = (int)e.OldValues["Id"];
DataRow dr = CustomDataSourse.Rows.Find(id);
dr[0] = e.NewValues["Id"];
dr[1] = e.NewValues["Data"];
ASPxGridView g = sender as ASPxGridView;
UpdateData(g);
g.CancelEdit();
e.Cancel = true;
}
protected void grid_RowInserting(object sender, ASPxDataInsertingEventArgs e) {
CustomDataSourse.Rows.Add(e.NewValues["Id"], e.NewValues["Data"]);
ASPxGridView g = sender as ASPxGridView;
UpdateData(g);
g.CancelEdit();
e.Cancel = true;
}
private void CreateGrid() {
ASPxGridView grid = new ASPxGridView();
grid.ID = "grid";
this.Form.Controls.Add(grid);
grid.EnableCallBacks = false;
grid.KeyFieldName = "Id";
grid.DataBinding += grid_DataBinding;
grid.RowDeleting += grid_RowDeleting;
grid.RowUpdating += grid_RowUpdating;
grid.RowInserting += grid_RowInserting;
grid.DataBound += grid_DataBound;
grid.RowValidating += new ASPxDataValidationEventHandler(grid_RowValidating);
grid.DataBind();
if (!this.IsPostBack) {
GridViewCommandColumn c = new GridViewCommandColumn();
grid.Columns.Add(c);
c.EditButton.Visible = true;
c.UpdateButton.Visible = true;
c.NewButton.Visible = true;
c.DeleteButton.Visible = true;
c.CancelButton.Visible = true;
}
GridViewDataTextColumn col = grid.Columns["Id"] as GridViewDataTextColumn;
col.PropertiesTextEdit.ValidationSettings.RegularExpression.ValidationExpression
= "\\d{1,9}";
}
void grid_RowValidating(object sender, ASPxDataValidationEventArgs e) {
int id = (int)e.NewValues["Id"];
if ((!e.OldValues.Contains("Id") || ((int)e.OldValues["Id"] != id))
&& (CustomDataSourse.Rows.Find(id) != null)) {
ASPxGridView grid = sender as ASPxGridView;
e.Errors[grid.Columns["Id"]] =
String.Format("Column 'Id' is constrained to be unique. Value '{0}' is already present.", id);
}
}
private void UpdateData(ASPxGridView g) {
ViewState["CustomTable"] = dataTable;
g.DataBind();
}
}