【问题标题】:DevExpress XAF how to add a control to popup window of an actionDevExpress XAF 如何将控件添加到动作的弹出窗口
【发布时间】:2015-03-16 15:51:33
【问题描述】:

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

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

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

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

【问题讨论】:

  • 有一个例子展示了如何显示一个自定义控件。这个例子对你有帮助吗? devexpress.com/Support/Center/Example/Details/E911
  • E911 参考是一个奇怪的组合,在某些方面过于详细,而在其他方面则不够详细。它真的对我没有太大帮助。不过感谢您的建议。

标签: devexpress xaf


【解决方案1】:

您需要遵循教程here。在该示例中,弹出窗口显示Note 对象的属性。您需要一个具有文件上传属性的对象。 (确保您已添加 File Attachments 模块)。

因此,创建一个类似于in the documentation for File Attachments 描述的 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);
      }
   }
}

现在关注popup tutorial,但不要使用Note,而是使用Resume

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

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

【讨论】:

  • 那个参考 (CustomDocument2723) 是最接近我需要的。谢谢你的建议。当我需要将一个复杂的 DevExpress ASP.NET Webforms UI 控件 ASPxUploadControl 放在操作的弹出窗口中时,断开连接就出现了,而不是像 Note 那样的另一个 BO 的列表或详细视图。
  • XAF 框架是这样的:一些非常复杂的事情非常容易(例如,安全性、报告、丰富的可定制模型);一些通常容易的事情是困难的(例如,非标准控制等)。你得到了很多开箱即用的东西,通常有一种方法可以实现你所需要的,但它可能不是你习惯的方式。文件附件模块已经使用了 ASPxUploadControl,而 XAF 的方式是创建一个非持久 BO 并在弹出窗口中使用它。这种方法的优点是 BO 被添加到模型中,因此您可以像其他所有内容一样自定义布局。
【解决方案2】:

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

【讨论】:

  • 我还应该提到我必须使用 ASPxUploadControl 而不是 XAF 文件附件模块的另一个原因是因为 XAF 文件附件模块没有 ASPxUploadControl 所做的全部四件事:1)进度条,2) 多个文件上传,3) 处理大文件的高级模式 4) 拖放文件。我们可能没有 #3 和 #4 也可以生活,但文件附件模块至少没有 #1 和 #2 是相当缺乏的。
猜你喜欢
  • 2015-04-12
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
相关资源
最近更新 更多