EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

树列表中的节点图像

本主题描述了如何在XAF应用程序中显示树列表条目的SVG光栅图像。

为此,TreeList编辑器模块提供ASPxTreeListEditorTreeListEditor。它们旨在显示ITreeNode对象。TreeListEditorASPxTreeListEditor也可以显示这些对象的图像。通过在从ITreeNode接口继承的业务类中实现ITreeNodeSvgImageProvider(对于SVG图像)或ITreeNodeImageProvider接口(对于栅格图像),可以为树列表的对象启用图像。

下图说明了一个TreeListEditor,它显示带有图像的节点:

ITreeNodeImageProvider

您可以在Feature Center演示的“列表编辑器” |“列表编辑器”中查看示例。| 节点图像部分。默认情况下,Feature Center演示安装在%PUBLIC%\ Documents \ DevExpress演示19.2 \ Components \ eXpressApp Framework \ FeatureCenter中。该演示的ASP.NET版本可从http://demos.devexpress.com/XAF/FeatureCenter/在线获得。

注意

对一个集合中的所有项目使用SVG或光栅图像。当同时使用SVG和光栅图像时,“树列表”编辑器可能无法显示某些图像。在这种情况下,请确保所有条目的图像文件具有相同的格式,然后检查应用程序的日志文件以获取其他诊断消息。

SVG图片

本节演示如何实现ITreeNodeSvgImageProvider接口,以及如何使用其GetSvgImage方法显示树列表对象的SVG图像。

以下代码段显示了实现ITreeNodeSvgImageProvider接口的Product业务类。如果Product对象没有嵌套产品,则GetSvgImage方法返回“ BO_Product”图像;否则,将返回“ BO_Category”图像。该ImageLoader.GetImageInfo方法从XAF的这些图像的标准图像库。

using DevExpress.ExpressApp.Utils;
using DevExpress.Persistent.Base.General;
//...
public class Product : BaseObject, ITreeNode, ITreeNodeSvgImageProvider {
    private Product parentProduct;
    private string caption;

    public Product(Session session) : base(session) { }

    public string Caption {
        get { return caption; }
        set { SetPropertyValue<string>(nameof(Caption), ref caption, value); }
    }
    [Browsable(false)]
    [Association("Product-Product")]
    public Product ParentProduct {
        get { return parentProduct; }
        set { SetPropertyValue<Product>(nameof(ParentProduct), ref parentProduct, value); }
    }
    [Association("Product-Product"), Aggregated]
    public XPCollection<Product> NestedProducts {
        get { return GetCollection<Product>(nameof(NestedProducts)); }
    }

    #region ITreeNode Members
    IBindingList ITreeNode.Children {
        get { return NestedProducts; }
    }
    string ITreeNode.Name {
        get { return Caption; }
    }
    ITreeNode ITreeNode.Parent {
        get { return ParentProduct; }
    }
    #endregion

    #region ITreeNodeSvgImageProvider Members
    public DevExpress.Utils.Svg.SvgImage GetSvgImage(out string imageName) {
        if (NestedProducts != null && NestedProducts.Count > 0) {            
            imageName = "BO_Category";
        }
        else {
            imageName = "BO_Product";
        }
        return ImageLoader.Instance.GetImageInfo(imageName).CreateSvgImage();
    }
    #endregion 
}

光栅图像

您可以对栅格图像使用相同的方法,但是可以实现ITreeNodeImageProvider。然后更换GetSvgImage方法与ITreeNodeImageProviderITreeNodeImageProvider.GetImage方法如下所示。

public class Product : BaseObject, ITreeNode, ITreeNodeImageProvider {
    // ...
    #region ITreeNodeImageProvider Members
    public System.Drawing.Image GetImage(out string imageName) {
        if (NestedProducts != null && NestedProducts.Count > 0) {            
            imageName = "BO_Category";
        }
        else {
            imageName = "BO_Product";
        }
        return ImageLoader.Instance.GetImageInfo(imageName).Image;
    }
    #endregion
}   
相关文章

转载保留此链接,注明出处