This example demonstrates how to use the SetEditFormTemplateContent method to define the FormLayout extension in edit form template.
C#settings.SetEditFormTemplateContent(c => {
var editItem = ViewData["Item"] != null ? ViewData["Item"] : c.DataItem;
Html.DevExpress().FormLayout(set => {
set.Name = "FormLayout";
// ...
}).Render();
// ...
});
Files to Review
Does this example address your development requirements/objectives?
(you will be redirected to DevExpress.com to submit your response)
Example Code
Razor@{
var grid = Html.DevExpress().GridView(settings => {
settings.Name = "GridView";
settings.CallbackRouteValues = new { Controller = "Home", Action = "GridViewPartial" };
settings.SettingsEditing.AddNewRowRouteValues = new { Controller = "Home", Action = "GridViewPartialAddNew" };
settings.SettingsEditing.UpdateRowRouteValues = new { Controller = "Home", Action = "GridViewPartialUpdate" };
settings.SettingsEditing.DeleteRowRouteValues = new { Controller = "Home", Action = "GridViewPartialDelete" };
settings.SettingsEditing.Mode = GridViewEditingMode.EditFormAndDisplayRow;
settings.SettingsBehavior.ConfirmDelete = true;
settings.CommandColumn.Visible = true;
settings.CommandColumn.ShowNewButton = true;
settings.CommandColumn.ShowDeleteButton = true;
settings.CommandColumn.ShowEditButton = true;
settings.KeyFieldName = "ModelID";
settings.SetEditFormTemplateContent(c => {
var editItem = ViewData["Item"] != null ? ViewData["Item"] : c.DataItem;
Html.DevExpress().FormLayout(set => {
set.Name = "FormLayout";
set.Items.AddGroupItem(groupSettings => {
groupSettings.Caption = "ModelGroup";
groupSettings.Name = "group";
groupSettings.Items.Add(item => {
item.NestedExtensionType = FormLayoutNestedExtensionItemType.TextBox;
item.Name = item.Caption = "Name";
item.SetNestedContent(() => {
Html.DevExpress().TextBox(tb => {
tb.Name = "ModelName";
tb.ShowModelErrors = true;
}).Bind(DataBinder.Eval(editItem, "ModelName")).Render();
});
});
groupSettings.Items.Add(item => {
item.NestedExtensionType = FormLayoutNestedExtensionItemType.DateEdit;
item.Name = item.Caption = "Date";
item.SetNestedContent(() => {
Html.DevExpress().DateEdit(tb => {
tb.Name = "ModelDate";
tb.ShowModelErrors = true;
}).Bind(DataBinder.Eval(editItem, "ModelDate")).Render();
});
});
groupSettings.Items.Add(item => {
item.NestedExtensionType = FormLayoutNestedExtensionItemType.CheckBox;
item.Name = item.Caption = "State";
item.SetNestedContent(() => {
Html.DevExpress().CheckBox(tb => {
tb.Name = "ModelState";
tb.ShowModelErrors = true;
}).Bind(DataBinder.Eval(editItem, "ModelState")).Render();
});
});
});
}).Render();
Html.DevExpress().Button(
btnSettings => {
btnSettings.Name = "btnUpdate";
btnSettings.UseSubmitBehavior = false;
btnSettings.Text = "Update";
btnSettings.ClientSideEvents.Click = "function(s, e){ GridView.UpdateEdit(); }";
}
)
.Render();
Html.DevExpress().Button(
btnSettings => {
btnSettings.Name = "btnCancel";
btnSettings.UseSubmitBehavior = false;
btnSettings.Text = "Cancel";
btnSettings.ClientSideEvents.Click = "function(s, e){ GridView.CancelEdit(); }";
}
)
.Render();
});
settings.SettingsPager.Visible = true;
settings.Settings.ShowGroupPanel = true;
settings.Settings.ShowFilterRow = true;
settings.SettingsBehavior.AllowSelectByRowClick = false;
settings.Columns.Add("ModelID");
settings.Columns.Add("ModelName");
settings.Columns.Add("ModelState");
settings.Columns.Add("ModelDate");
});
if (ViewData["EditError"] != null) {
grid.SetEditErrorText((string)ViewData["EditError"]);
}
}
@grid.Bind(Model).GetHtml()
C#using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DevExpress.Web.Mvc;
using MVCxGridViewDataBinding.Models;
namespace Q588216.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
public List<MyModel> Data {
get {
return Session["data"] as List<MyModel> == null ? (List<MyModel>)(Session["data"] = MyModel.GetModelList()) : Session["data"] as List<MyModel>;
}
}
[ValidateInput(false)]
public ActionResult GridViewPartial()
{
return PartialView("_GridViewPartial",Data);
}
[HttpPost, ValidateInput(false)]
public ActionResult GridViewPartialAddNew(MVCxGridViewDataBinding.Models.MyModel item)
{
ViewData["Item"] = item;
var model = MyModel.GetModelList();
if (ModelState.IsValid)
{
try
{
MyModel.InsertModel(Data, item);
}
catch (Exception e)
{
ViewData["EditError"] = e.Message;
}
}
else
ViewData["EditError"] = "Please, correct all errors.";
return PartialView("_GridViewPartial", model);
}
[HttpPost, ValidateInput(false)]
public ActionResult GridViewPartialUpdate(MVCxGridViewDataBinding.Models.MyModel item)
{
ViewData["Item"] = item;
if (ModelState.IsValid)
{
try
{
// Insert here a code to update the item in your model
MyModel.UpdateModel(Data, item);
}
catch (Exception e)
{
ViewData["EditError"] = e.Message;
}
}
else
ViewData["EditError"] = "Please, correct all errors.";
return PartialView("_GridViewPartial", Data);
}
[HttpPost, ValidateInput(false)]
public ActionResult GridViewPartialDelete(Int32 ModelID)
{
if (ModelID >= 0)
{
try
{
MyModel.DeleteModel(Data, ModelID);
}
catch (Exception e)
{
ViewData["EditError"] = e.Message;
}
}
return PartialView("_GridViewPartial", Data);
}
}
}