Skip to main content
Tab

ASPxCardView.CardUpdating Event

Enables you to prevent a card from being updated.

Namespace: DevExpress.Web

Assembly: DevExpress.Web.v24.1.dll

NuGet Package: DevExpress.Web

Declaration

public event ASPxDataUpdatingEventHandler CardUpdating

Event Data

The CardUpdating event's data class is ASPxDataUpdatingEventArgs. The following properties provide information specific to this event:

Property Description
Cancel Gets or sets a value indicating whether the event should be canceled. Inherited from CancelEventArgs.
Keys Gets a dictionary of field name/value pairs that represent the primary key of the row to update.
NewValues Gets a dictionary that contains the values of the non-key field name/value pairs in the row to be updated.
OldValues Gets a dictionary that contains the original field name/value pairs in the row to be updated.

Remarks

The CardUpdating event occurs when an end-user has changed cell values and tries to pass them to the data source by clicking the Update command. To cancel the update operation, set the event parameter’s Cancel property to true.

If you use edit form templates, you must process the update manually in the CardUpdating event handler.

After a card has been updated, the ASPxCardView.CardUpdated event is raised.

Example

The example illustrates how to delete selected cards of the ASPxCardView bound to an in-memory DataSource.

function OnClickButtonDel(s, e) {
    card.PerformCallback('Delete');
}
<dx:ASPxCardView ID="ASPxCardView1" KeyFieldName="ID" AutoGenerateColumns="False" runat="server" 
                    ClientInstanceName="card" 
                    OnCellEditorInitialize="ASPxCardView1_CellEditorInitialize" 
                    OnCardInserting="ASPxCardView1_CardInserting" 
                    OnCardUpdating="ASPxCardView1_CardUpdating" 
                    OnCustomCallback="ASPxCardView1_CustomCallback" 
                    OnDataBinding="ASPxCardView1_DataBinding">
    <Columns>
        <dx:CardViewTextColumn FieldName="ID" />
        <dx:CardViewTextColumn FieldName="Data" />
    </Columns>
    <CardLayoutProperties>
        <Items>
            <dx:CardViewCommandLayoutItem HorizontalAlign="Right" ShowSelectCheckbox="True" />
            <dx:CardViewColumnLayoutItem ColumnName ="ID" />
            <dx:CardViewColumnLayoutItem ColumnName="Data" />
            <dx:EditModeCommandLayoutItem HorizontalAlign="Right" />
        </Items>
    </CardLayoutProperties>
</dx:ASPxCardView>
<dx:ASPxButton ID="ASPxButton1" runat="server" ClientInstanceName="btn1" 
                AutoPostBack="false" Text="Delete">
    <ClientSideEvents Click="OnClickButtonDel"/>
</dx:ASPxButton>
DataTable table = null;
protected void Page_Init(object sender, EventArgs e) {
    if (!IsPostBack && !IsCallback) {
        table = new DataTable();
        table.Columns.Add("ID", typeof(int));
        table.Columns.Add("Data", typeof(string));
        table.PrimaryKey = new DataColumn[] { table.Columns["ID"] };
        for (int i = 0; i < 10; i++) {
            table.Rows.Add(new object[] { i, "row " + i.ToString() });
        }
        Session["table"] = table;
    }
    else
        table = (DataTable)Session["table"];
}
protected void Page_Load(object sender, EventArgs e) {
    if (!IsCallback && !IsPostBack) ASPxCardView1.DataBind();
}
protected void ASPxCardView1_CellEditorInitialize(object sender, DevExpress.Web.ASPxCardViewEditorEventArgs e) {
    ASPxCardView grid2 = (ASPxCardView)sender;
    if (e.Column.FieldName == "ID") {
        ASPxTextBox textBox = (ASPxTextBox)e.Editor;
        textBox.ClientEnabled = false;
        if (grid2.IsNewCardEditing) {
            table = (DataTable)Session["table"];
            textBox.Text = GetNewId().ToString();
        }
    }
}
protected void ASPxCardView1_CardInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e) {
    table = (DataTable)Session["table"];
    ASPxCardView cv = (ASPxCardView)sender;
    DataRow row = table.NewRow();
    row["ID"] = e.NewValues["ID"];
    row["Data"] = e.NewValues["Data"];
    cv.CancelEdit();
    e.Cancel = true;
    table.Rows.Add(row);
}
protected void ASPxCardView1_CardUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e) {
    table = (DataTable)Session["table"];
    DataRow row = table.Rows.Find(e.Keys[0]);
    row["Data"] = e.NewValues["Data"];
    ASPxCardView1.CancelEdit();
    e.Cancel = true;
}

protected void ASPxCardView1_DataBinding(object sender, EventArgs e) {
    ASPxCardView1.DataSource = table;
}
protected void ASPxCardView1_CustomCallback(object sender, DevExpress.Web.ASPxCardViewCustomCallbackEventArgs e) {
    if (e.Parameters == "Delete") {
        table = (DataTable)Session["table"];
        List<Object> selectItems = ASPxCardView1.GetSelectedFieldValues("ID");
        foreach (object selectItemId in selectItems) {
            table.Rows.Remove(table.Rows.Find(selectItemId));
        }
        ASPxCardView1.DataBind();
        ASPxCardView1.Selection.UnselectAll();
    }
}
private int GetNewId() {
    table = (DataTable)Session["table"];
    if (table.Rows.Count == 0) return 0;
    int max = Convert.ToInt32(table.Rows[0]["ID"]);
    for (int i = 1; i < table.Rows.Count; i++) {
        if (Convert.ToInt32(table.Rows[i]["ID"]) > max)
            max = Convert.ToInt32(table.Rows[i]["ID"]);
    }
    return max + 1;
}
See Also