Событие выбора изменено ComboBoxEditSettings в сетевом контроле Devexpress (Silverlight) - PullRequest
1 голос
/ 01 марта 2012

I doin silverlight 4 App.

У меня devexpress gridcontrol из 5 столбцов, в которые я поместил ComboBoxEditor в столбец.

<dxg:GridControl x:Name="grid_currentillnes">
                            <dxg:GridControl.Columns>
                                <dxg:GridColumn FieldName="Complaints" Header="Complaints/Disease" />
                                <dxg:GridColumn FieldName="Duration" Header="Duratiion" />
                                <dxg:GridColumn FieldName="Period" Header="Period" />
                                <dxg:GridColumn Header="Treatment" FieldName="Treatment">
                                    <dxg:GridColumn.EditSettings>
                                        <dxe:ComboBoxEditSettings x:Name="cmbx_treatmenttype" PopupMaxHeight="150"  DisplayMember="Treatment" ValueMember="Treatment"  />
                                    </dxg:GridColumn.EditSettings>
                                </dxg:GridColumn>
                                <dxg:GridColumn Header="Details" FieldName="Details" />
                            </dxg:GridControl.Columns>
                            <dxg:GridControl.View>
                                <dxg:TableView Name="tableView4" ShowGroupPanel="False"  NewItemRowPosition="Top" NavigationStyle="Cell"  />
                            </dxg:GridControl.View>
                        </dxg:GridControl>

Я хочу изменить выбор событие редактора выпадающего списка , но такого события не существует .. Как это делается ??

1 Ответ

6 голосов
/ 02 марта 2012

Существует только один редактор одновременно, когда просмотр находится в режиме редактирования. После того, как этот редактор был показан, View запускает событие GridViewBase.ShownEditor . Таким образом, вы можете использовать это событие для подписки любого события (например, ComboBoxEdit.SelectedIndexChanged ) активного редактора ( GridViewBase.ActiveEditor ). Чтобы отписаться от события вы можете использовать GridViewBase.HiddenEditor :

tableView3.ShownEditor += new EditorEventHandler(tableView3_ShownEditor);
tableView3.HiddenEditor += new EditorEventHandler(tableView3_HiddenEditor);
//...
void tableView3_ShownEditor(object sender, EditorEventArgs e) {
    if(e.Column.FieldName == "Treatment") {
        ((ComboBoxEdit)tableView3.ActiveEditor).SelectedIndexChanged += ComboBoxEdit_SelectedIndexChanged;
    }
}
void tableView3_HiddenEditor(object sender, EditorEventArgs e) {
    if(e.Column.FieldName == "Treatment") {
        ((ComboBoxEdit)tableView3.ActiveEditor).SelectedIndexChanged -= ComboBoxEdit_SelectedIndexChanged;
    }
}
void ComboBoxEdit_SelectedIndexChanged(object sender, RoutedEventArgs e) {
    // do something
}
...