本文介绍了在Devexpress网格控件(Silverlight)中选择更改ComboBoxEditSettings事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在做Silverlight 4应用程序。



我已经将列表中的ComboBoxEditor放置在5列的devexpress gridcontrol中。

 < dxg:GridControl x:Name =grid_currentillnes> 
< dxg:GridControl.Columns>
< dxg:GridColumn FieldName =ComplaintsHeader =Complaints / Disease/>
< dxg:GridColumn FieldName =DurationHeader =Duratiion/>
< dxg:GridColumn FieldName =PeriodHeader =Period/>
< dxg:GridColumn Header =TreatmentFieldName =Treatment>
< dxg:GridColumn.EditSettings>
< dxe:ComboBoxEditSettings x:Name =cmbx_treatmenttypePopupMaxHeight =150DisplayMember =TreatmentValueMember =Treatment/>
< / dxg:GridColumn.EditSettings>
< / dxg:GridColumn>
< dxg:GridColumn Header =DetailsFieldName =Details/>
< / dxg:GridControl.Columns>
< dxg:GridControl.View>
< dxg:TableView Name =tableView4ShowGroupPanel =FalseNewItemRowPosition =TopNavigationStyle =Cell/>
< / dxg:GridControl.View>
< / dxg:GridControl>

我想获得组合框编辑器的选择更改事件,但没有事件存在...如何做?

解决方案

当View处于编辑模式时,一次只有一个编辑器。显示此编辑器后,视图将触发事件。因此,您可以使用此事件订阅活动编辑器的任何事件(例如) )。要取消订阅该事件,您可以使用:

  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
}


I am doin silverlight 4 App.

I have devexpress gridcontrol of 5 columns where i have placed ComboBoxEditor in a column .

<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>

I want get the selection changed event of the combobox editor but no such event exist..How is this done??

解决方案

There is only one editor at one time when View is in the editing mode. After this editor has been shown, a View fires the GridViewBase.ShownEditor event. So you can use this event to subscribe any event(e.g ComboBoxEdit.SelectedIndexChanged) of active editor (GridViewBase.ActiveEditor). To unsubscribe the event you can use the 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
}

这篇关于在Devexpress网格控件(Silverlight)中选择更改ComboBoxEditSettings事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-24 07:15