Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

RepositoryItemCheckEdit.QueryValueByCheckState Event

Allows for custom conversion from the check state (checked, unchecked and indeterminate) to an edit value.

Namespace: DevExpress.XtraEditors.Repository

Assembly: DevExpress.XtraEditors.v24.2.dll

NuGet Package: DevExpress.Win.Navigation

#Declaration

[DXCategory("Events")]
public event QueryValueByCheckStateEventHandler QueryValueByCheckState

#Event Data

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

Property Description
CheckState Gets the editor’s current check state.
Handled Gets or sets whether the event is handled and no default processing is required. Inherited from QueryCheckStatesEventArgs.
Value Use this property to set the edit value that corresponds to the current check state.

#Remarks

The QueryValueByCheckState and RepositoryItemCheckEdit.QueryCheckStateByValue events allow you to manually convert from values to check states and vice versa.

See the RepositoryItemCheckEdit.QueryCheckStateByValue topic to learn more.

#Example

This example demonstrates how to handle RepositoryItemCheckEdit.QueryCheckStateByValue and RepositoryItemCheckEdit.QueryValueByCheckState events in order to use a check editor to display and modify data from the bound data field.

The example assumes that a check editor is bound to a specific dataset field whose type is not obviously known and should be determined programmatically. The available data types that the field can take on are boolean, string and integer. So the field can contain the following combinations representing an option value (these values will be used to set the editor’s CheckEdit.EditValue property):

  • True, False - for the boolean type;
  • Yes“, “No“, “?“ - for the string type;
  • 1, 0, -1 - for the integer type.

It is evident that making use of RepositoryItemCheckEdit.ValueChecked, RepositoryItemCheckEdit.ValueUnchecked and RepositoryItemCheckEdit.ValueGrayed properties is insufficient in this case. Thus, the example requires and implements a custom “edit value -> check state” and “check state -> edit value” conversion logic, which is illustrated by the sample code below.

using DevExpress.XtraEditors.Controls;

private void checkEdit1_QueryCheckStateByValue(object sender, QueryCheckStateByValueEventArgs e) {
    string val = e.Value.ToString();
    switch (val) {
        case "True":
        case "Yes":
        case "1":
            e.CheckState = CheckState.Checked;
            break;
        case "False":
        case "No":
        case "0":
            e.CheckState = CheckState.Unchecked;
            break;
        default:
            e.CheckState = CheckState.Indeterminate;
            break;
    }
    e.Handled = true;
}

private void checkEdit1_QueryValueByCheckState(object sender, QueryValueByCheckStateEventArgs e) {
    CheckEdit edit = sender as CheckEdit;
    object val = edit.EditValue;
    switch (e.CheckState) {
        case CheckState.Checked:
            if (val is bool) e.Value = true;
            else if (val is string) e.Value = "Yes";
            else if (val is int) e.Value = 1;
            else e.Value = null;
        break;
        case CheckState.Unchecked:
            if (val is bool) e.Value = false;
            else if (val is string) e.Value = "No";
            else if (val is int) e.Value = 0;
            else e.Value = null;
            break;
        default:
            if (val is bool) e.Value = false;
            else if (val is string) e.Value = "?";
            else if (val is int) e.Value = -1;
            else e.Value = null;
            break;
    }
    e.Handled = true;
}
See Also