Back to Devexpress

ASPxGridViewTemplateReplacement Class

aspnet-devexpress-dot-web-3d36d81d.md

latest12.4 KB
Original Source

ASPxGridViewTemplateReplacement Class

Displays regular elements (edit cells, buttons, or a pager) within the Edit Form or Pager templates.

Namespace : DevExpress.Web

Assembly : DevExpress.Web.v25.2.dll

NuGet Package : DevExpress.Web

Declaration

csharp
public class ASPxGridViewTemplateReplacement :
    WebControl,
    IWebControl,
    IStopLoadPostDataOnCallbackMarker
vb
Public Class ASPxGridViewTemplateReplacement
    Inherits WebControl
    Implements IWebControl,
               IStopLoadPostDataOnCallbackMarker

Remarks

Template replacements allow you to add standard grid elements (edit cells, buttons, or a pager) to the EditForm or PagerBar templates.

To create a template replacement, add an object of the ASPxGridViewTemplateReplacement class to a template and specify the ReplacementType property.

Design-Time Example

The code sample below adds ASPxPageControl to the edit form template and uses the ASPxGridViewTemplateReplacement objects to render an edit form with edit cells and buttons in a custom position.

Run Demo: ASPxGridView - Edit Form Templates

aspx
<dx:ASPxGridView ID="grid" runat="server" AutoGenerateColumns="False" KeyFieldName="EmployeeID"
    OnRowUpdating="grid_RowUpdating" OnRowInserting="grid_RowInserting">
    <Templates>
        <EditForm>
            <div style="padding: 4px 3px 4px">
                <dx:ASPxPageControl ID="ASPxPageControl1" runat="server" Width="100%">
                    <TabPages>
                        <dx:TabPage Text="Info" Visible="true">
                            <ContentCollection>
                                <dx:ContentControl runat="server">
                                    <dx:ASPxGridViewTemplateReplacement ID="Editors" runat="server"
                                        ReplacementType="EditFormEditors" />
                                </dx:ContentControl>
                            </ContentCollection>
                        </dx:TabPage>
                        <dx:TabPage Text="Notes" Visible="true">
                            <ContentCollection>
                                <dx:ContentControl runat="server">
                                    <dx:ASPxMemo runat="server" ID="notesEditor"
                                        Text='<%# Eval("Notes")%>' Width="100%" Height="93px" />
                                </dx:ContentControl>
                            </ContentCollection>
                        </dx:TabPage>
                    </TabPages>
                </dx:ASPxPageControl>
            </div>
            <div style="text-align: right; padding: 2px">
                <dx:ASPxGridViewTemplateReplacement ID="UpdateButton" runat="server"
                    ReplacementType="EditFormUpdateButton" />
                <dx:ASPxGridViewTemplateReplacement ID="CancelButton" runat="server"
                    ReplacementType="EditFormCancelButton" />
            </div>
        </EditForm>
    </Templates>
</dx:ASPxGridView>
csharp
protected void grid_RowUpdating(object sender, ASPxDataUpdatingEventArgs e){
    e.NewValues["Notes"] = GetMemoText();
}

protected void grid_RowInserting(object sender, ASPxDataInsertingEventArgs e){
    e.NewValues["Notes"] = GetMemoText();
}

protected string GetMemoText(){
    ASPxPageControl pageControl = grid.FindEditFormTemplateControl("pageControl") as ASPxPageControl;
    ASPxMemo memo = pageControl.FindControl("notesEditor") as ASPxMemo;
    return memo.Text;
}
vb
Protected Sub grid_RowUpdating(ByVal sender As Object, ByVal e As ASPxDataUpdatingEventArgs)
    e.NewValues("Notes") = GetMemoText()
End Sub

Protected Sub grid_RowInserting(ByVal sender As Object, ByVal e As ASPxDataInsertingEventArgs)
    e.NewValues("Notes") = GetMemoText()
End Sub

Protected Function GetMemoText() As String
    Dim pageControl As ASPxPageControl = TryCast(grid.FindEditFormTemplateControl("pageControl"), ASPxPageControl)
    Dim memo As ASPxMemo = TryCast(pageControl.FindControl("notesEditor"), ASPxMemo)
    Return memo.Text
End Function

Runtime Example

The following example creates an edit form 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

Implements

IComponent

IDisposable

IParserAccessor

IUrlResolutionService

IDataBindingsAccessor

IControlBuilderAccessor

IControlDesignerAccessor

IExpressionsAccessor

IAttributeAccessor

Inheritance

Object Control WebControl ASPxGridViewTemplateReplacement BootstrapGridViewTemplateReplacement

See Also

ASPxGridViewTemplateReplacement Members

DevExpress.Web Namespace