DevExpress XAF如何将控件添加到操作的弹出窗口

DevExpress XAF如何将控件添加到操作的弹出窗口,devexpress,xaf,Devexpress,Xaf,我正经历着一段极其困难的时期,试图弄明白如何在DevExpress-XAF应用程序中完成看似简单的事情 我已经了解了如何将自定义操作项添加到业务对象详细视图的顶部。我所需要做的就是显示一个包含DevExpress Web UI控件(ASPxUploadControl,但它可以是任何控件,甚至是一个简单的ASPxButton)的弹出窗口。这不需要与平台无关,它只需要在Web UI应用程序中工作,并且可以在Web模块和Web UI项目中实现 DevExpress文档似乎都没有将这两件简单的事情联系在

我正经历着一段极其困难的时期,试图弄明白如何在DevExpress-XAF应用程序中完成看似简单的事情

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

DevExpress文档似乎都没有将这两件简单的事情联系在一起,我也弄不明白。DevExpress支持也没有太大的帮助-说清楚,他们曾试图帮助我,但我似乎无法让他们真正理解我的具体场景(基于他们指向我的文档,这似乎比我试图做的要复杂得多)


是否有其他人在DevExpress XAF中实现了我所追求的目标?有DevExpress XAF经验的人能给我一些如何实现这一点的提示吗?

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

因此,创建一个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);
      }
   }
}
现在按照说明进行操作,但不要使用
注释
,而是使用
恢复

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


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

此外,我没有使用FileAttachmentBase的内容,只需处理ASPxUploadControl的fileuploadcompleted事件,即可手动写入数据库中的附件表,该表仅存储上传文件的文件名和文件系统位置(并且ASPxUploadControl将文件存储在文件系统中,而不是像FileAttachmentBase一样存储在数据库中)。经过几天的努力,我几乎把它弄明白了。一旦我这样做了,我将发布一个youtube视频,这样每个人都可以看到这是如何做到的——特别强调如何将任何旧的DevExpress ASP.NET Webforms UI控件塞入自定义操作的自定义弹出窗口,以及如何处理UI控件的事件(如ASPxUploadControl,FileUploadCompleted事件)。技术细节过于详细,无法在此发布。

这里有一个示例演示如何显示自定义控件。这个例子对你有帮助吗?E911参考是一个奇怪的组合,在某些方面过于详细,而在其他方面不够详细。这真的帮不了我多少忙。不过谢谢你的建议。那个参考资料(CustomDocument2723)是最接近我需要的。谢谢你的建议。当我需要将一个复杂的DevExpress ASP.NET Webforms UI控件ASPxUploadControl放入一个操作的弹出窗口,而不是另一个类似BO的便笺的列表或详细视图时,就会出现断开连接的情况。XAF框架是这样的:一些非常复杂的事情非常简单(例如,安全性、报告、丰富的可定制模型);一些通常简单的事情是困难的(例如,非标准控制等)。你从盒子里得到了很多东西,通常有一种方法可以实现你所需要的,但这可能不是你习惯的方式。文件附件模块已经使用了ASPxUploadControl,XAF方法是创建一个非持久性BO并在弹出窗口中使用它。这种方法的优点是BO被添加到模型中,因此您可以像其他方法一样定制布局。我还应该提到的是,我必须使用ASPxUploadControl而不是XAF文件附件模块的另一个原因,这是因为XAF文件附件模块没有ASPxUploadControl所能完成的全部四项功能:1)进度条、2)多文件上载、3)处理大块大文件的高级模式4)拖放文件。如果没有#3和#4,我们也许可以生活下去,但对于文件附件模块来说,至少没有#1和#2是相当缺乏的。