Add an Action with Option Selection
using DevExpress.ExpressApp.Utils;
using DevExpress.Persistent.Base.General;
using MySolution.Module.BusinessObjects;
//...
public partial class TaskActionsController : ViewController {
private ChoiceActionItem setPriorityItem;
private ChoiceActionItem setStatusItem;
public TaskActionsController() {
InitializeComponent();
RegisterActions(components);
SetTaskAction.Items.Clear();
setPriorityItem =
new ChoiceActionItem(CaptionHelper.GetMemberCaption(typeof(DemoTask), "Priority"), null);
SetTaskAction.Items.Add(setPriorityItem);
FillItemWithEnumValues(setPriorityItem, typeof(Priority));
setStatusItem =
new ChoiceActionItem(CaptionHelper.GetMemberCaption(typeof(DemoTask), "Status"), null);
SetTaskAction.Items.Add(setStatusItem);
FillItemWithEnumValues(setStatusItem, typeof(TaskStatus));
}
private void FillItemWithEnumValues(ChoiceActionItem parentItem, Type enumType) {
foreach(object current in Enum.GetValues(enumType)) {
EnumDescriptor ed = new EnumDescriptor(enumType);
ChoiceActionItem item = new ChoiceActionItem(ed.GetCaption(current), current);
item.ImageName = ImageLoader.Instance.GetEnumValueImageName(current);
parentItem.Items.Add(item);
}
}
}
public enum Priority {
[ImageName("State_Priority_Low")]
Low = 0,
[ImageName("State_Priority_Normal")]
Normal = 1,
[ImageName("State_Priority_High")]
High = 2
}
using DevExpress.ExpressApp.Editors;
using System.Collections;
using MySolution.Module.BusinessObjects;
//...
private void SetTaskAction_Execute(object sender, SingleChoiceActionExecuteEventArgs e) {
IObjectSpace objectSpace = View is ListView ?
Application.CreateObjectSpace() : View.ObjectSpace;
ArrayList objectsToProcess = new ArrayList(e.SelectedObjects);
if(e.SelectedChoiceActionItem.ParentItem == setPriorityItem) {
foreach(Object obj in objectsToProcess) {
DemoTask objInNewObjectSpace = (DemoTask)objectSpace.GetObject(obj);
objInNewObjectSpace.Priority = (Priority)e.SelectedChoiceActionItem.Data;
}
}
else
if(e.SelectedChoiceActionItem.ParentItem == setStatusItem) {
foreach(Object obj in objectsToProcess) {
DemoTask objInNewObjectSpace = (DemoTask)objectSpace.GetObject(obj);
objInNewObjectSpace.Status = (TaskStatus)e.SelectedChoiceActionItem.Data;
}
}
if(View is DetailView && ((DetailView)View).ViewEditMode == ViewEditMode.View) {
objectSpace.CommitChanges();
}
if(View is ListView) {
objectSpace.CommitChanges();
View.ObjectSpace.Refresh();
}
}
using DevExpress.ExpressApp.Editors;
using System.Collections;
using MySolution.Module.BusinessObjects;
//...
private void SetTaskAction_Execute(object sender, SingleChoiceActionExecuteEventArgs e) {
IObjectSpace objectSpace = View is ListView ?
Application.CreateObjectSpace() : View.ObjectSpace;
ArrayList objectsToProcess = new ArrayList(e.SelectedObjects);
if(e.SelectedChoiceActionItem.ParentItem == setPriorityItem) {
foreach(Object obj in objectsToProcess) {
DemoTask objInNewObjectSpace = (DemoTask)objectSpace.GetObject(obj);
objInNewObjectSpace.Priority = (Priority)e.SelectedChoiceActionItem.Data;
}
}
else
if(e.SelectedChoiceActionItem.ParentItem == setStatusItem) {
foreach(Object obj in objectsToProcess) {
DemoTask objInNewObjectSpace = (DemoTask)objectSpace.GetObject(obj);
objInNewObjectSpace.Status = (TaskStatus)e.SelectedChoiceActionItem.Data;
}
}
if(View is DetailView && ((DetailView)View).ViewEditMode == ViewEditMode.View) {
objectSpace.CommitChanges();
}
if(View is ListView) {
objectSpace.CommitChanges();
View.ObjectSpace.Refresh();
}
}