我正在努力弄清楚如何在DevExpress XAF应用程序中做一个简单的事情。
我已经想出了如何将自定义操作项添加到业务对象的详细信息视图的顶部。我需要做的就是显示一个包含DevExpress Web UI控件的弹出窗口(ASPxUploadControl,但它可以是任何控件,甚至是简单的ASPxButton)。这不需要与平台无关,它只需要在Web UI应用程序中工作,并且可以在Web模块和Web UI项目中实现。
DevExpress文档似乎没有将这些简单的事情联系在一起,我无法弄明白。 DevExpress支持也不是很有帮助 - 要清楚,他们试图帮助我,但似乎我无法让他们真正理解我的确切场景(基于他们指向我的文档,这似乎是方式比我想做的更复杂。)
还有其他人在DevExpress XAF中实现了我想要的东西吗?任何拥有DevExpress XAF经验的人都可以给我一些如何实现这一目标的技巧吗?
答案 0 :(得分:0)
您需要按照教程here进行操作。在该示例中,弹出窗口显示Note
对象的属性。您需要一个具有属性的对象来上传文件。 (确保已添加文件附件模块)。
所以创建一个XPO对象(或者你喜欢的EF对象),就像这样描述in the documentation for File Attachments一样:
[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]
示例。)
还有一件事 - 确保弹出窗口是以编辑模式而不是查看模式打开的,否则将不会显示上传按钮。
答案 1 :(得分:0)
另外,我没有使用FileAttachmentBase的东西,只是处理ASPxUploadControl的FilesUploadCompleted事件来手动写入数据库中的Attachments表,该表只存储上传文件的文件名和文件系统位置(而ASPxUploadControl将文件存储在文件系统中)比起像FileAttachmentBase这样的数据库)。经过几天的敲击,我差点搞清楚了。一旦我这样做,我将发布一个youtube视频,这样每个人都可以看到这是如何完成的 - 特别强调如何将任何旧的DevExpress ASP.NET Webforms UI控件放入自定义操作的自定义弹出窗口,以及如何处理UI控件的事件(例如ASPxUploadControl,FilesUploadCompleted事件)。技术细节过于冗长,无法在此发布。