Как мне перенаправить на панель управления теперь, когда GIScreenHelper помечен как устаревший? - PullRequest
2 голосов
/ 28 апреля 2020

У нас есть панель управления, доступ к которой осуществляется через меню «Запрос» на странице «Запасы». До нашего последнего незначительного обновления на 2019 R2 следующий код компилировался без проблем, чтобы позволить открыть панель мониторинга, соответствующую текущему инвентарному идентификатору. Он по-прежнему компилируется, но с предупреждением, что GIScreenHelper устарел и будет помечен как внутренний в следующем обновлении. Отсюда мой вопрос ... как мне перенаправить на панель инструментов, если я не могу использовать GIScreenHelper для инициализации графика, используемого в PXRedirectRequiredException?

string screenID = "SS0010DB"; //DashboardID 
PXSiteMapNode sm = GIScreenHelper.GetSiteMapNode(screenID);
PXGraph graph = GIScreenHelper.InstantiateGraph(screenID);
if (graph is LayoutMaint)
{
    LayoutMaint copygraph = graph as LayoutMaint;
    Dictionary<string, object> parameters = new Dictionary<string, object>();

    parameters["InventoryID"] = item.InventoryCD;
    copygraph.Filter.Current.Values = parameters;

    throw new PXRedirectRequiredException(sm.Url, copygraph, PXBaseRedirectException.WindowMode.New, string.Empty);
}

Я попытался инициализировать LayoutMaint напрямую, но не могу выяснить, что нужно установить, чтобы указать, какой идентификатор экрана использовать и передавать параметры.

1 Ответ

1 голос
/ 28 апреля 2020

Я полагаю, у вас есть 2 варианта:

  1. Создайте экземпляр графа DashboardMaint, который является графом страницы Dashboards, укажите имя Dashboard и вызовите действие viewDashboard этого графика.

  2. Просто возьмите код действия viewDashboard DashboardMaint и перенаправьте прямо на свою панель инструментов:

    [PXButton(ConfirmationType = PXConfirmationType.IfDirty, ConfirmationMessage = "Any unsaved changes will be discarded. Do you want to proceed?")]
    [PXUIField(DisplayName = "View")]
    public void viewDashboard()
    {
        throw new PXRedirectToUrlException(PXSiteMap.Provider.FindSiteMapNodeByScreenID(this.Dashboards.Current.ScreenID).Url, PXBaseRedirectException.WindowMode.Same, "View Dashboard");
    }
    

ОБНОВЛЕНО

Ниже приведен пример кода, как открыть панель мониторинга с предопределенным значением для фильтра. Пример написан для панели мониторинга Customer View.

[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "CustomerView")]
protected virtual IEnumerable RedirectToCustomerViewDashboard(PXAdapter adapter)
{
    string screenID = "DB000031"; //DashboardID 
    LayoutMaint graph;
    using (new PXScreenIDScope(screenID))
    {
        graph = PXGraph.CreateInstance<LayoutMaint>(screenID);
    }
    Dictionary<string, object> parameters = new Dictionary<string, object>();
    parameters["CustomerAccountID"] = "ABARTENDE";
    graph.Filter.Current.Values = parameters;
    throw new PXRedirectRequiredException(PXSiteMap.Provider.FindSiteMapNodeByScreenID(screenID).Url, graph, PXBaseRedirectException.WindowMode.New, string.Empty);
}

Ключом для значения является Имя параметра из определения Dashboard

enter image description here

...