Back to Devexpress

How to: Create Edit Form Template at Runtime

aspnet-4341-components-grid-view-examples-how-to-create-edit-form-template-at-runtime.md

latest5.8 KB
Original Source

How to: Create Edit Form Template at Runtime

  • Sep 30, 2021
  • 2 minutes to read

This example creates the Edit Form‘s template at runtime.

csharp
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.Web.ASPxEditors;
using DevExpress.Web.ASPxGridView;

public partial class _Default : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e) {
        ASPxGridView1.Templates.EditForm = new EditFormTemplate();
    }
    protected void ASPxGridView1_RowUpdating(object sender,
    DevExpress.Web.Data.ASPxDataUpdatingEventArgs e) {
    e.NewValues["ProductName"] = (ASPxGridView1.FindEditFormTemplateControl("tbProductName") 
                as ASPxTextBox).Value;
    e.NewValues["UnitPrice"] = (ASPxGridView1.FindEditFormTemplateControl("spinUnitPrice") 
                 as ASPxSpinEdit).Value;
    }
}

public class EditFormTemplate : ITemplate {
    public void InstantiateIn(Control container) {
        Table table = CreateHtmlTable();
        container.Controls.Add(table);

        ASPxTextBox tb = new ASPxTextBox();
        tb.ID = "tbProductName";
        tb.CssFilePath = @"~/App_Themes/Soft Orange/{0}/styles.css";
        tb.CssPostfix = "Soft_Orange";
        tb.Value = DataBinder.Eval((container as 
              GridViewEditFormTemplateContainer).DataItem, "ProductName");
        table.Rows[0].Cells[0].Controls.Add(tb);

        ASPxSpinEdit spin = new ASPxSpinEdit();
        spin.ID = "spinUnitPrice";
        spin.CssFilePath = @"~/App_Themes/Soft Orange/{0}/styles.css";
        spin.CssPostfix = "Soft_Orange";
        spin.Value = DataBinder.Eval((container as 
             GridViewEditFormTemplateContainer).DataItem, "UnitPrice");
        table.Rows[0].Cells[1].Controls.Add(spin);

        ASPxGridViewTemplateReplacement tr = new ASPxGridViewTemplateReplacement();
        tr.ReplacementType = GridViewTemplateReplacementType.EditFormUpdateButton;
        table.Rows[1].Cells[2].Controls.Add(tr);
        Literal separator = new Literal();
        separator.Text = " | ";
        table.Rows[1].Cells[2].Controls.Add(separator);
        tr = new ASPxGridViewTemplateReplacement();
        tr.ReplacementType = GridViewTemplateReplacementType.EditFormCancelButton;
        table.Rows[1].Cells[2].Controls.Add(tr);
    }

    Table CreateHtmlTable() {
        Table table = new Table();
        table.Rows.Add(new TableRow());
        table.Rows[0].Cells.AddRange(new TableCell[] { new TableCell(),
                                                       new TableCell(),
                                                       new TableCell()});
        table.Rows.Add(new TableRow());
        table.Rows[1].Cells.AddRange(new TableCell[] { new TableCell(),
                                                       new TableCell(),
                                                       new TableCell()});
        return table;
    }
}
vb
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.Web.ASPxEditors
Imports DevExpress.Web.ASPxGridView

Public Partial Class _Default
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(sender As Object, e As EventArgs)
        ASPxGridView1.Templates.EditForm = New EditFormTemplate()
    End Sub
    Protected Sub ASPxGridView1_RowUpdating(sender As Object, e As DevExpress.Web.Data.ASPxDataUpdatingEventArgs)
        e.NewValues("ProductName") = TryCast(ASPxGridView1.FindEditFormTemplateControl("tbProductName"), ASPxTextBox).Value
        e.NewValues("UnitPrice") = TryCast(ASPxGridView1.FindEditFormTemplateControl("spinUnitPrice"), ASPxSpinEdit).Value
    End Sub
End Class

Public Class EditFormTemplate
    Implements ITemplate
    Public Sub InstantiateIn(container As Control) Implements ITemplate.InstantiateIn
        Dim table As Table = CreateHtmlTable()
        container.Controls.Add(table)

        Dim tb As New ASPxTextBox()
        tb.ID = "tbProductName"
        tb.CssFilePath = "~/App_Themes/Soft Orange/{0}/styles.css"
        tb.CssPostfix = "Soft_Orange"
        tb.Value = DataBinder.Eval(TryCast(container, GridViewEditFormTemplateContainer).DataItem, "ProductName")
        table.Rows(0).Cells(0).Controls.Add(tb)

        Dim spin As New ASPxSpinEdit()
        spin.ID = "spinUnitPrice"
        spin.CssFilePath = "~/App_Themes/Soft Orange/{0}/styles.css"
        spin.CssPostfix = "Soft_Orange"
        spin.Value = DataBinder.Eval(TryCast(container, GridViewEditFormTemplateContainer).DataItem, "UnitPrice")
        table.Rows(0).Cells(1).Controls.Add(spin)

        Dim tr As New ASPxGridViewTemplateReplacement()
        tr.ReplacementType = GridViewTemplateReplacementType.EditFormUpdateButton
        table.Rows(1).Cells(2).Controls.Add(tr)
        Dim separator As New Literal()
        separator.Text = " | "
        table.Rows(1).Cells(2).Controls.Add(separator)
        tr = New ASPxGridViewTemplateReplacement()
        tr.ReplacementType = GridViewTemplateReplacementType.EditFormCancelButton
        table.Rows(1).Cells(2).Controls.Add(tr)
    End Sub

    Private Function CreateHtmlTable() As Table
        Dim table As New Table()
        table.Rows.Add(New TableRow())
        table.Rows(0).Cells.AddRange(New TableCell() {New TableCell(), New TableCell(), New TableCell()})
        table.Rows.Add(New TableRow())
        table.Rows(1).Cells.AddRange(New TableCell() {New TableCell(), New TableCell(), New TableCell()})
        Return table
    End Function
End Class