【问题标题】:Cannot get External URL from UploadFileWithIDSelector object无法从 UploadFileWithIDSelector 对象获取外部 URL
【发布时间】:2017-01-05 04:55:20
【问题描述】:

我正在尝试创建一个打开选项卡的操作,将上传文件的外部 URL 插入选项卡,并导航到该 URL,就像用户单击“文件”按钮然后单击文件的标题之一一样打开包含文件内容的选项卡。

这是我用来获取外部链接的代码。请注意,对于此示例,我将 FileID 作为扩展列存储在 InventoryItem 表中:

PXView item = Base.Views["Item"];

InventoryItem item = PXSelect<InventoryItem, Where<InventoryItem.inventoryCD,
   Equal<Current<InventoryItem.inventoryCD>>>>
   .Select(Base, Base.Views["Item"].Cache.Current);

InventoryItemExt itemext = item.Cache.GetExtension<InventoryItemExt>(item);
UploadFileWithIDSelector fileInfo = PXSelect<UploadFileWithIDSelector,
   Where<UploadFileWithIDSelector.fileID, 
   Equal<Current<PX.Objects.IN.InventoryItemExt.usrDefaultSpecID>>>
   .Select(Base, itemext.UsrDefaultSpecID);

然后我尝试执行以下代码以使用 ExternalLink 打开页面:

throw new PXRedirectToUrlException(fileInfo.ExternalLink, ""); 

这会导致以下错误:

对象引用未设置为对象的实例。

DAC无法直接获取外部链接吗?有什么办法可以解决这个问题,以便它检索外部链接?是否有另一种(可能更简单)的方法来检索上传文件的外部链接?

谢谢

【问题讨论】:

  • 可能与您的问题无关,但您将参数传递给 BQL 查询,就好像您使用的是Required而不是Current。如果可行,则意味着您当前的记录与您指定的记录相同。此外,获取库存项目的第一个查询是有缺陷的,因为Required 会期望一个InventoryCD 而不是一个完整的对象。你很可能会得到你想要的:InventoryItem item = Base.Item.Current;InventoryItemExt itemext = PXCache&lt;InventoryItem&gt;.GetExtension&lt;InventoryItemExt&gt;(item); ,或者只使用没有参数的最后一行。

标签: acumatica


【解决方案1】:

您应该能够使用以下语法重定向到文件:

throw new PXRedirectToUrlException(PXRedirectToFileException.BuildUrl(fileInfo.fileID), "");

考虑使用此语法进行重定向,因为您不需要消息:

throw new PXRedirectToFileException(fileInfo.fileID, true);

【讨论】:

  • 这成功了!谢谢你。只是一个更正, .fileID 应该是 .FileID 因为您引用的是值,而不是类型。我最终使用 throw new PXRedirectToUrlException(PXRedirectToFileException.BuildUrl(fileInfo.FileID), PXBaseRedirectException.WindowMode.NewWindow, "");因为客户希望它在一个新窗口中。再次感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
  • 2022-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多