0

我很难弄清楚如何在 DevExpress XAF 应用程序中做看起来应该很简单的事情。

我已经弄清楚如何将自定义操作项添加到业务对象的详细视图顶部。我需要做的就是显示一个包含 DevExpress Web UI 控件(ASPxUploadControl,但它可以是任何控件,甚至是简单的 ASPxButton)的弹出窗口。这不需要与平台无关,它只需要在 Web UI 应用程序中工作,并且可以在 Web 模块和 Web UI 项目中实现。

DevExpress 文档似乎都没有将这两个简单的东西联系在一起,我想不通。DevExpress 支持也不是很有帮助 - 很明显,他们试图帮助我,但似乎我无法让他们真正理解我的确切场景(基于他们指向我的文档,这似乎是一种方式比我想做的更复杂)。

有没有其他人在 DevExpress XAF 中实现了我所追求的?任何有 DevExpress XAF 经验的人都可以给我一些关于如何实现这一点的提示吗?

4

2 回答 2

0

您需要按照此处的教程进行操作。在该示例中,弹出窗口显示Note对象的属性。您需要一个具有文件上传属性的对象。(确保您已添加文件附件模块)。

因此,创建一个类似于文件附件文档中描述的 XPO 对象(或如果您愿意,也可以创建一个 EF 对象),如下所示:

[NonPersistent]
public class Resume : BaseObject {
   public Resume(Session session) : base(session) {}

   private FileData file;
   [Aggregated, ExpandObjectMembers(ExpandObjectMembers.Never)]
   public FileData File {
      get { return file; }
      set {
         SetPropertyValue("File", ref file, value);
      }
   }
}

现在按照弹出教程进行操作,但不要Note使用Resume.

注意Resume标记为[NonPersistent],所以它不会将它保存到数据库中,但您可以获取Execute事件中的内容。(当然,如果您希望将附件保存到数据库中,请使用[DefaultClassOptions]Note 示例中的方法)。

还有一件事 - 确保弹出窗口以编辑模式而不是查看模式打开,否则不会出现上传按钮。

于 2015-03-16T16:25:00.150 回答
0

另外,我没有使用 FileAttachmentBase 的东西,只是处理 ASPxUploadControl 的 FilesUploadCompleted 事件来手动写入数据库中的附件表,该表只存储上传文件的文件名和文件系统位置(并且 ASPxUploadControl 将文件存储在文件系统中,而不是在无论如何,像 FileAttachmentBase 这样的数据库)。经过几天的努力,我几乎已经弄清楚了。一旦我这样做了,我将发布一个 youtube 视频,以便每个人都可以确切地看到这是如何完成的 - 特别强调如何将任何旧的 DevExpress ASP.NET Webforms UI 控件放入自定义操作的自定义弹出窗口,以及如何处理UI 控件的事件(如 ASPxUploadControl、FilesUploadCompleted 事件)。技术细节过于冗长,无法在此处发布。

于 2015-03-17T05:51:01.590 回答