Skip to content

DevExpress-Examples/asp-net-web-forms-grid-set-edit-form-values

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Grid View for ASP.NET WebForms - How to modify edit form values at runtime

This example demonstrates how to dynamically calculate the Total value in the edit form when a user changes the Unit Price or Unit In Stock value.

Set Edit Form Values

Implementation Details

You can calculate and assign values to edit form editors on the client and server sides.

Client Side

Follow the steps below to calculate and assign editor values on the client.

  1. Subscribe to the client ValueChanged event in columns whose values affect the calculated value.
    <dx:GridViewDataSpinEditColumn FieldName="UnitPrice" >
        <PropertiesSpinEdit>
            <ClientSideEvents ValueChanged="OnEditorValueChanged" />
        </PropertiesSpinEdit>
    </dx:GridViewDataSpinEditColumn>
    <dx:GridViewDataSpinEditColumn FieldName="UnitsInStock" >
        <PropertiesSpinEdit>
            <ClientSideEvents ValueChanged="OnEditorValueChanged" />
        </PropertiesSpinEdit>
    </dx:GridViewDataSpinEditColumn>
  2. In the event handler, call the GetEditValue method to obtain editor values.
    function OnEditorValueChanged(s, e) {
        var unitPrice = grid.GetEditValue("UnitPrice");
        var unitsInStock = grid.GetEditValue("UnitsInStock");
        // ...
    }
  3. Call the SetEditValue method to set an editor value.
    function OnEditorValueChanged(s, e) {
        // ...
        grid.SetEditValue("Total", unitPrice * unitsInStock);
    }

Server Side

Follow the steps below to calculate and assign editor values on the server side.

  1. Define EditItemTemplate for columns whose values are involved in the calculation. Add editors in templates and bind them to corresponding fields in your data source.
    <dx:GridViewDataColumn FieldName="UnitPrice" >
        <EditItemTemplate>
            <dx:ASPxSpinEdit ID="UnitPriceEditor" runat="server" Value='<%# Bind("UnitPrice") %>'>
                @* ...*@
            </dx:ASPxSpinEdit>
        </EditItemTemplate>
    </dx:GridViewDataColumn>
    <dx:GridViewDataColumn FieldName="UnitsInStock" >
        <EditItemTemplate>
            <dx:ASPxSpinEdit ID="UnitsInStockEditor" runat="server" Value='<%# Bind("UnitsInStock") %>'>
                @* ...*@
            </dx:ASPxSpinEdit>
        </EditItemTemplate>
    </dx:GridViewDataColumn>
    <dx:GridViewDataTextColumn FieldName="Total"  ReadOnly="true" UnboundType="Decimal">
        <EditItemTemplate>
            <dx:ASPxTextBox ID="TotalEditor" runat="server" Value='<%# Bind("Total") %>' />
        </EditItemTemplate>
    </dx:GridViewDataTextColumn>
  2. Subscribe to the client ValueChanged event for editors whose values affect the calculated value.
     <dx:ASPxSpinEdit ID="UnitPriceEditor" runat="server" Value='<%# Bind("UnitPrice") %>'>
         <ClientSideEvents ValueChanged="OnEditorValueChanged" />
     </dx:ASPxSpinEdit>
     @* ... *@
     <dx:ASPxSpinEdit ID="UnitsInStockEditor" runat="server" Value='<%# Bind("UnitsInStock") %>'>
         <ClientSideEvents ValueChanged="OnEditorValueChanged" />
     </dx:ASPxSpinEdit>
  3. In the event handler, call the PerformCallback method to send a callback to the server and generate the CustomCallback event.
    function OnEditorValueChanged(s, e) {
        grid.PerformCallback();
    }
  4. In the event handler, call the FindEditRowCellTemplateControl method to obtain editors contained in templates.
    protected void ASPxGridView1_CustomCallback(object sender, DevExpress.Web.ASPxGridViewCustomCallbackEventArgs e) {
        ASPxGridView grid = (ASPxGridView)sender;
        ASPxSpinEdit unitPriceEditor = (ASPxSpinEdit)grid.FindEditRowCellTemplateControl(((GridViewDataColumn)grid.Columns["UnitPrice"]), "UnitPriceEditor");
        ASPxSpinEdit unitsInStockEditor = (ASPxSpinEdit)grid.FindEditRowCellTemplateControl(((GridViewDataColumn)grid.Columns["UnitsInStock"]), "UnitsInStockEditor");
        ASPxTextBox totalEditor = (ASPxTextBox)grid.FindEditRowCellTemplateControl(((GridViewDataColumn)grid.Columns["Total"]), "TotalEditor");
        // ...
    }
  5. Calculate and assign an editor value.
    totalEditor.Value = Convert.ToDecimal(unitPriceEditor.Value) * Convert.ToDecimal(unitsInStockEditor.Value);

Files to Look At

More Examples