Liste Görünümü İşlem

ListViewShowObject Eylemi ( ListViewProcessCurrentObjectController.ProcessCurrentObjectAction ), MasterDetailMode ListViewOnly olarak ayarlanmış Liste Görünümlerinde yürütülmeden önce gerçekleşir .

Bir kullanıcı mevcut Liste Görünümünde bir nesneyi çift tıklattığında veya seçili bir nesne için ENTER tuşuna bastığında, ListViewShowObject Eylemi yürütülür. Bu Eylem, seçilen nesne için bir Ayrıntı Görünümü çağırır. CustomProcessSelectedItem olayı , belirli Liste Görünümlerinde ListViewShowObject Eylemi yerine özel bir Eylem yürütmenize olanak tanır . Örneğin, WinForms ReportsController , Rapor Tasarımcısını ve ASP.NET Web Forms ReportsController , Ayrıntı Görünümü yerine Rapor Görüntüleyiciyi çağırır. CustomProcessSelectedItem olayını işlerken, CustomProcessListViewSelectedItemEventArgs.Handled parametresini true olarak ayarlayınEylem yürütmenizden sonra varsayılan Eylemin yürütülmesini önlemek için. Seçili olan nesneye erişmek için CustomProcessListViewSelectedItemEventArgs.InnerArgs.CurrentObject parametresini kullanın.

Aşağıdaki örnek, özel bir Ayrıntı Görünümü göstermek için CustomProcessSelectedItem olayını işleyen Denetleyiciyi göstermektedir:

using DevExpress.ExpressApp;
using DevExpress.ExpressApp.SystemModule;
// ...
public class ProcessContactListViewRowController : ViewController {
    public ProcessContactListViewRowController() {
        TargetViewId = "Contact_ListView";
    }
    protected override void OnActivated() {
        base.OnActivated();
        ListViewProcessCurrentObjectController listProcessController = Frame.GetController<ListViewProcessCurrentObjectController>();
        if(listProcessController != null)
            listProcessController.CustomProcessSelectedItem += ProcessContactListViewRowController_CustomProcessSelectedItem;        
    }
    void ProcessContactListViewRowController_CustomProcessSelectedItem(
        object sender, CustomProcessListViewSelectedItemEventArgs e) {
        Contact currentContact = (Contact)e.InnerArgs.CurrentObject;
        if (currentContact.Position != null && currentContact.Position.Title == "Manager") {
            IObjectSpace objectSpace = Application.CreateObjectSpace(currentContact.GetType());
            e.InnerArgs.ShowViewParameters.CreatedView = Application.CreateDetailView(objectSpace, "Contact_DetailView_Manager", true, objectSpace.GetObject(currentContact));
            e.Handled = true;
        }
    }
    protected override void OnDeactivated() {
        base.OnDeactivated();
        Frame.GetController<ListViewProcessCurrentObjectController>().CustomProcessSelectedItem -= ProcessContactListViewRowController_CustomProcessSelectedItem;
    }
}

Kaynak: DevExpress Docs

Bir yanıt yazın