Acumatica 自定义任务和活动弹出窗口
Acumatica Customize Task & Activities pop up
是否可以自定义当您单击 Acumatica 中大多数屏幕右上角的“活动”按钮时显示的“任务和活动”弹出屏幕?
我们有一个将任务所有者字段添加到列表视图的请求。
我已经尝试搜索源代码,但我一直无法弄清楚如何修改弹出窗口。
我在代码中找到了这个,但不确定链接到哪个页面(如果有)。
[PXUIField(Visible = false, MapEnableRights = PXCacheRights.Select)]
[PXButton(OnClosingPopup = PXSpecialButtonType.Refresh)]
public virtual IEnumerable ViewAllActivities(PXAdapter adapter)
{
var gr = new ActivitiesMaint();
gr.Filter.Current.NoteID = ((PXCache<TActivity>)_Graph.Caches[typeof(TActivity)]).InitNewRow().RefNoteID;
throw new PXPopupRedirectException(gr, string.Empty, true);
}
创建网格和添加列定义的代码位于:
PX.Web.UI.PXActivityBox class(请参阅下面的完整方法)。
不幸的是,这无法更改,它超出了自定义范围,因为:
- 网格是在 C# 源代码中定义的,而不是在 ASPX 文件中声明的。
- 网格是在无法扩展的编译代码中定义的,它不在图表中。
我能想到的唯一解决方法是创建您自己的操作来打开 ActivitiesMaint 图 (EP405000)。这与 ActivityBox 不同,操作必须放置在主(最顶部)工具栏之外。
private void CreateActivityGrid(WebControl div)
{
var grid = new PXGrid()
{
ID = _CONTENT_ID,
Width = Unit.Percentage(100),
AllowSearch = true,
SkinID = "Inquire",
AllowPaging = true,
MatrixMode = true
};
grid.Levels.Add(new PXGridLevel() { DataMember = "Activity" });
grid.DataMember = "Activity";
grid.ActionBar.ActionsText = ActionsTextVisible.True;
grid.ActionBar.PagerVisible = ActionVisible.False;
grid.ActionBar.DefaultAction = "cmdViewActivity";
grid.ActionBar.Position = ActionsPosition.Top;
grid.CallbackCommands.Refresh.CommitChanges = true;
grid.CallbackCommands.Refresh.PostData = PostDataMode.Page;
grid.Mode.AllowAddNew = false;
grid.Mode.AllowUpdate = false;
grid.Mode.AllowDelete = false;
grid.Mode.AllowFormEdit = false;
grid.Mode.AllowUpload = false;
grid.AutoSize.Enabled = true;
grid.Columns.Add(new PXGridColumn() { DataField = "IsCompleteIcon", Width = Unit.Pixel(21), AllowShowHide = AllowShowHide.False, ForceExport = true });
grid.Columns.Add(new PXGridColumn() { DataField = "PriorityIcon", Width = Unit.Pixel(21), AllowShowHide = AllowShowHide.False, AllowResize = false, ForceExport = true });
grid.Columns.Add(new PXGridColumn() { DataField = "ReminderIcon", Width = Unit.Pixel(21), AllowShowHide = AllowShowHide.False, AllowResize = false, ForceExport = true });
grid.Columns.Add(new PXGridColumn() { DataField = "ClassIcon", Width = Unit.Pixel(31), AllowShowHide = AllowShowHide.False, ForceExport = true });
grid.Columns.Add(new PXGridColumn() { DataField = "ClassInfo", });
grid.Columns.Add(new PXGridColumn() { DataField = "Subject", LinkCommand = "ViewActivity", Width = Unit.Pixel(297), });
grid.Columns.Add(new PXGridColumn() { DataField = "UIStatus" });
grid.Columns.Add(new PXGridColumn() { DataField = "MPStatus" });
grid.Columns.Add(new PXGridColumn() { DataField = "Released", Width = Unit.Pixel(80) });
grid.Columns.Add(new PXGridColumn() { DataField = "StartDate", Width = Unit.Pixel(120), DisplayFormat = "g" });
grid.Columns.Add(new PXGridColumn() { DataField = "CategoryID" });
div.Controls.Add(grid);
grid.ApplyStyleSheetSkin(this.Page);
_content = grid;
}
是否可以自定义当您单击 Acumatica 中大多数屏幕右上角的“活动”按钮时显示的“任务和活动”弹出屏幕?
我们有一个将任务所有者字段添加到列表视图的请求。
我已经尝试搜索源代码,但我一直无法弄清楚如何修改弹出窗口。
我在代码中找到了这个,但不确定链接到哪个页面(如果有)。
[PXUIField(Visible = false, MapEnableRights = PXCacheRights.Select)]
[PXButton(OnClosingPopup = PXSpecialButtonType.Refresh)]
public virtual IEnumerable ViewAllActivities(PXAdapter adapter)
{
var gr = new ActivitiesMaint();
gr.Filter.Current.NoteID = ((PXCache<TActivity>)_Graph.Caches[typeof(TActivity)]).InitNewRow().RefNoteID;
throw new PXPopupRedirectException(gr, string.Empty, true);
}
创建网格和添加列定义的代码位于: PX.Web.UI.PXActivityBox class(请参阅下面的完整方法)。
不幸的是,这无法更改,它超出了自定义范围,因为:
- 网格是在 C# 源代码中定义的,而不是在 ASPX 文件中声明的。
- 网格是在无法扩展的编译代码中定义的,它不在图表中。
我能想到的唯一解决方法是创建您自己的操作来打开 ActivitiesMaint 图 (EP405000)。这与 ActivityBox 不同,操作必须放置在主(最顶部)工具栏之外。
private void CreateActivityGrid(WebControl div)
{
var grid = new PXGrid()
{
ID = _CONTENT_ID,
Width = Unit.Percentage(100),
AllowSearch = true,
SkinID = "Inquire",
AllowPaging = true,
MatrixMode = true
};
grid.Levels.Add(new PXGridLevel() { DataMember = "Activity" });
grid.DataMember = "Activity";
grid.ActionBar.ActionsText = ActionsTextVisible.True;
grid.ActionBar.PagerVisible = ActionVisible.False;
grid.ActionBar.DefaultAction = "cmdViewActivity";
grid.ActionBar.Position = ActionsPosition.Top;
grid.CallbackCommands.Refresh.CommitChanges = true;
grid.CallbackCommands.Refresh.PostData = PostDataMode.Page;
grid.Mode.AllowAddNew = false;
grid.Mode.AllowUpdate = false;
grid.Mode.AllowDelete = false;
grid.Mode.AllowFormEdit = false;
grid.Mode.AllowUpload = false;
grid.AutoSize.Enabled = true;
grid.Columns.Add(new PXGridColumn() { DataField = "IsCompleteIcon", Width = Unit.Pixel(21), AllowShowHide = AllowShowHide.False, ForceExport = true });
grid.Columns.Add(new PXGridColumn() { DataField = "PriorityIcon", Width = Unit.Pixel(21), AllowShowHide = AllowShowHide.False, AllowResize = false, ForceExport = true });
grid.Columns.Add(new PXGridColumn() { DataField = "ReminderIcon", Width = Unit.Pixel(21), AllowShowHide = AllowShowHide.False, AllowResize = false, ForceExport = true });
grid.Columns.Add(new PXGridColumn() { DataField = "ClassIcon", Width = Unit.Pixel(31), AllowShowHide = AllowShowHide.False, ForceExport = true });
grid.Columns.Add(new PXGridColumn() { DataField = "ClassInfo", });
grid.Columns.Add(new PXGridColumn() { DataField = "Subject", LinkCommand = "ViewActivity", Width = Unit.Pixel(297), });
grid.Columns.Add(new PXGridColumn() { DataField = "UIStatus" });
grid.Columns.Add(new PXGridColumn() { DataField = "MPStatus" });
grid.Columns.Add(new PXGridColumn() { DataField = "Released", Width = Unit.Pixel(80) });
grid.Columns.Add(new PXGridColumn() { DataField = "StartDate", Width = Unit.Pixel(120), DisplayFormat = "g" });
grid.Columns.Add(new PXGridColumn() { DataField = "CategoryID" });
div.Controls.Add(grid);
grid.ApplyStyleSheetSkin(this.Page);
_content = grid;
}