ASPxGridView - CommandLayoutItem position is unexpected when the Edit Form adaptivity is enabled. ASPxGridView - Disabled command buttons are misaligned as compared to enabled ones. ASPxGridView - It is impossible to change caption styles when a column has an EditItem template. ASPxGridView - It's impossible to add command buttons using the designer.
Using TemplateFields in the GridView Control (C#). 17 minutes to read.
- I have a Devexpress gridview with property enablecallbacks=false. When I open the editform and enter some data and click update, it loses the data entered but does the validation. How do I make the editform work retain the value? I dont want the editform to lose the data during postback?
- 'here change the column index as per your GridVIew Design //Retrieves the button. I was working on a GridView, and I needed to change some rows color due to a. How to change Cell value via EditForm but Editor is NOT focus, or when I.
Contributors.In this articlebyorTo provide flexibility, the GridView offers the TemplateField, which renders using a template. A template can include a mix of static HTML, Web controls, and databinding syntax. In this tutorial we'll examine how to use the TemplateField to achieve a greater degree of customization with the GridView control. IntroductionThe GridView is composed of a set of fields that indicate what properties from the DataSource are to be included in the rendered output along with how the data will be displayed. The simplest field type is the BoundField, which displays a data value as text. Other field types display the data using alternate HTML elements. The CheckBoxField, for example, renders as a checkbox whose checked state depends on the value of a specified data field; the ImageField renders an image whose image source is based upon a specified data field.
Devexpress Gridview Edit Form Popup
Hyperlinks and buttons whose state depends on an underlying data field value can be rendered using the HyperLinkField and ButtonField field types.While the CheckBoxField, ImageField, HyperLinkField, and ButtonField field types allow for an alternate view of the data, they still are fairly limited with respect to formatting. A CheckBoxField can only display a single checkbox, whereas an ImageField can only display a single image. What if a particular field needs to display some text, a checkbox, and an image, all based upon different data field values?
Or what if we wanted to display the data using a Web control other than the CheckBox, Image, HyperLink, or Button? Furthermore, the BoundField limits its display to a single data field. What if we wanted to show two or more data field values in a single GridView column?To accommodate this level of flexibility the GridView offers the TemplateField, which renders using a template. A template can include a mix of static HTML, Web controls, and databinding syntax. Furthermore, the TemplateField has a variety of templates that can be used to customize the rendering for different situations.
For example, the ItemTemplate is used by default to render the cell for each row, but the EditItemTemplate template can be used to customize the interface when editing data.In this tutorial we'll examine how to use the TemplateField to achieve a greater degree of customization with the GridView control. In the we saw how to customize the formatting based on the underlying data using the DataBound and RowDataBound event handlers.
Another way to customize the formatting based on the underlying data is by calling formatting methods from within a template. We'll look at this technique in this tutorial as well.For this tutorial we will use TemplateFields to customize the appearance of a list of employees. NoteThe DataBindings dialog box allows you to indicate whether to perform two-way databinding.
Devexpress Gridview Edit
If you leave this unchecked, the databinding syntax <%# Eval('LastName')% will be used instead of <%# Bind('LastName')%. Either approach is fine for this tutorial. Two-way databinding becomes important when inserting and editing data. For simply displaying data, however, either approach will work equally well. We'll discuss two-way databinding in detail in future tutorials.Take a moment to view this page through a browser.
As you can see, the GridView still includes four columns; however, the FirstName column now lists both the FirstName and LastName data field values.Figure 9: Both the FirstName and LastName Values are Shown in a Single Column To complete this first step, remove the LastName BoundField and rename the FirstName TemplateField's HeaderText property to 'Name'. After these changes the GridView's declarative markup should look like the following: Figure 10: Each Employee's First and Last Names are Displayed in One Column Step 3: Using the Calendar Control to Display the HiredDateFieldDisplaying a data field value as text in a GridView is as simple as using a BoundField. For certain scenarios, however, the data is best expressed using a particular Web control instead of just text. Such customization of the display of data is possible with TemplateFields. For example, rather than display the employee's hire date as text, we could show a calendar (using ) with their hire date highlighted.To accomplish this, start by converting the HiredDate BoundField into a TemplateField. Simply go to the GridView's smart tag and click the Edit Columns link, bringing up the Fields dialog box. Select the HiredDate BoundField and click 'Convert this field into a TemplateField.'
Figure 11: Convert the HiredDate BoundField Into a TemplateField As we saw in Step 2, this will replace the BoundField with a TemplateField that contains an ItemTemplate and EditItemTemplate with a Label and TextBox whose Text properties are bound to the HiredDate value using the databinding syntax <%# Bind('HiredDate')%.To replace the text with a Calendar control, edit the template by removing the Label and adding a Calendar control. From the Designer, select Edit Templates from the GridView's smart tag and choose the HireDate TemplateField's ItemTemplate from the drop-down list. Next, delete the Label control and drag a Calendar control from the Toolbox into the template editing interface.Figure 12: Add a Calendar Control to the HireDate TemplateField's ItemTemplate At this point each row in the GridView will contain a Calendar control in its HiredDate TemplateField. However, the employee's actual HiredDate value is not set anywhere in the Calendar control, causing each Calendar control to default to showing the current month and date. To remedy this, we need to assign each employee's HiredDate to the Calendar control's and properties.From the Calendar control's smart tag, choose Edit DataBindings. Next, bind both SelectedDate and VisibleDate properties to the HiredDate data field.Figure 13: Bind the SelectedDate and VisibleDate Properties to the HiredDate Data Field. NoteThe Calendar control's selected date need not necessarily be visible.
For example, a Calendar may have August 1 st, 1999 as the selected date, but be showing the current month and year. The selected date and visible date are specified by the Calendar control's SelectedDate and VisibleDate properties. Since we want to both select the employee's HiredDate and make sure that it's shown we need to bind both of these properties to the HireDate data field.When viewing the page in a browser, the calendar now shows the month of the employee's hired date and selects that particular date.Figure 14: The Employee's HiredDate is Shown in the Calendar Control.
NoteAlternatively, instead of passing in an EmployeesRow instance, we could just pass in the HireDate value using <%# DisplayDaysOnJob(Eval('HireDate'))%. However, the Eval method returns an object, so we'd have to change our DisplayDaysOnJob method signature to accept an input parameter of type object, instead. We can't blindly cast the Eval('HireDate') call to a DateTime because the HireDate column in the Employees table can contain NULL values. Therefore, we'd need to accept an object as the input parameter for the DisplayDaysOnJob method, check to see if it had a database NULL value (which can be accomplished using Convert.IsDBNull(objectToCheck)), and then proceed accordingly.Due to these subtleties, I've opted to pass in the entire EmployeesRow instance.
In the GridView and its descendants, you can choose from a number of data edit modes. In addition to the most commonly used In-place edit mode (see the In-place Editors Overview topic for details), data can be edited via an EditForm, which provides standalone editors for editing grid data. An EditForm can be displayed as a separate modal window or as an in-line panel embedded between grid rows in the grid.
In the following image, an EditForm is shown as a modal window. This video walks you through the basics of using the WinForms grid EditForm to edit data. Learn more from our documentation.