In List View data access modes InstantFeedback, InstantFeedbackView, or ServerView the selected rows/objects are of the type ObjectRecord. In other modes the real type is available. Below a helper function to use one method for all modes.
using DevExpress.ExpressApp;
public static List<T> GetSelectedObjects<T>(IEnumerable selectedObjects, IObjectSpace os)
{
var selectedItemList = selectedObjects.OfType<ObjectRecord>()
.Where(x => x.ObjectType == typeof(T))
.Select(x => os.GetObjectByKey<T>(x.ObjectKeyValue))
.OfType<T>();
return selectedItemList.Concat(selectedObjects.OfType<T>()).ToList();
}
private void MyAction_Execute(object sender, SimpleActionExecuteEventArgs e)
{
var productList = GetSelectedObjects<Product>(ListView.SelectedObjects, ObjectSpace);
foreach (var product in productList)
{
// do something
}
ObjectSpace.Refresh();
}838610cookie-checkDevExpress XAF get selected items in Listview