【发布时间】:2018-03-11 12:15:42
【问题描述】:
我正在寻找一种解决方案,以向我在自定义表中创建的数据库行添加注释。我从 Ruslan 找到了以下用于访问 noteid 的解决方案,但我不明白如何使用它来向行添加注释。我有创建行的所有代码,我只需要属性或函数调用来实际将注释文本附加到行。
================================================ ====================
要在保存新父记录时自动创建笔记记录,应在父记录插入缓存时调用静态 PXNoteAttribute.GetNoteID(PXCache cache, object data) 方法。
例如,要在保存新的 Stock Item 时自动创建 Note 记录,您应该订阅 InventoryItem DAC 的 RowInserted 处理程序并调用 PXNoteAttribute.GetNoteID(...):
public class InventoryItemMaintExt : PXGraphExtension<InventoryItemMaint>
{
public void InventoryItem_RowInserted(PXCache sender, PXRowInsertedEventArgs e)
{
var noteCache = Base.Caches[typeof(Note)];
var oldDirty = noteCache.IsDirty;
PXNoteAttribute.GetNoteID<InventoryItem.noteID>(sender, e.Row);
noteCache.IsDirty = oldDirty;
}
}
上面的代码 sn-p 可以合并到几乎任何自定义 BLC 中,只需进行几个简单的更改即可将 InventoryItem 替换为自定义 DAC。
实施Gabriel的建议后:
我似乎没有在数据库中得到任何注释。代码编译并运行良好,但据我所知没有生成注释。 note id 是在我的表中设置的,但是 note 表中没有出现数据。请查看我的代码,让我知道需要更改的内容。另外,如何将注释列放入网格中,还是在正确完成后自动变为可用?
数据库字段定义:
[NoteID] [uniqueidentifier] NULL
DAC 字段:
#region NoteID
public abstract class noteID : PX.Data.IBqlField
{
}
protected Guid? _NoteID;
[PXNote()]
public virtual Guid? NoteID
{
get
{
return this._NoteID;
}
set
{
this._NoteID = value;
}
}
#endregion
创建记录的代码:
private static bool acumaticaException(Exception e, EDImportExceptionMaint excpMaint, LingoRet850 res850)
{
excpMaint.Clear();
var except = new EDImportExcept();
except.ExceptReason = "U";
except.Active = true;
<...field assignments...>
except.OrderNbr = "";
PXNoteAttribute.SetNote(excpMaint.Exception.Cache, excpMaint.Exception.Current,
((PX.Data.PXOuterException)e).InnerMessages[0] + "-" + e.Message);
excpMaint.Exception.Insert(except);
excpMaint.Actions.PressSave();
return true;
}
【问题讨论】:
-
我相信这只是生成 noteid 记录 - 如果您要查找的不是注释文本?
-
是的,我正在寻找代码来建立笔记记录/文本和任何其他属性,以便在我的屏幕的网格上显示笔记并使其能够在弹出窗口中显示通过点击它。只是猜测,但是我需要使用上面的代码来生成笔记记录然后更新它吗?我以为会有特定的功能或属性来设置文本。
-
问题是你设置了 Note before 实际上将
except记录插入到缓存中。插入它,然后设置注释,它就可以工作了。我还怀疑如果您只是将excpMaint.Exception.Current替换为except,它会起作用,但仍然认为最好先插入记录(在您执行PressSave()之前它不会命中数据库) -
谢谢博科普!!完全有道理,但只是您可能会错过的那些小概念之一。只是一个简单的问题。最好在 PressSave 之前还是之后设置注释?
-
另外,我在图表中使用动态 DAC 来显示处理网格中多个表的数据。我是否必须从自定义表中获取注释,然后将其设置为动态 DAC 以便它显示?将便笺放入网格有什么特别之处吗?
标签: acumatica