xaf C#将相关业务对象显示为选项卡上的列表视图

时间:2015-06-28 11:03:25

标签: c# xaf

我的业务对象(sms)与另一个模块的业务对象(公司)有一对多的关系。所以我在模块类的CustomizeTypesInfo方法中建立了这个关联。

我进行了调试,并且我确定已创建此关联,但是当我点击我的公司对象时,我无法看到短信列表。我希望短信列表在单独的选项卡中打开。我怎样才能做到这一点?

public override void CustomizeTypesInfo(ITypesInfo typesInfo)
{
base.CustomizeTypesInfo(typesInfo);
        ITypeInfo firmTypeInfo = typesInfo.FindTypeInfo(typeof(Firm));
        ITypeInfo smsReportTypeInfo = typesInfo.FindTypeInfo(typeof(Sms));
        IMemberInfo memberInfoSms = smsReportTypeInfo.FindMember("Firm");
        if (firmTypeInfo != null && smsReportTypeInfo != null)
        {
            XPDictionary xpDictionary = XpoTypesInfoHelper.GetXpoTypeInfoSource().XPDictionary;
            XPClassInfo firmClassInfo = xpDictionary.GetClassInfo("crm.net.Module", "crm.net.Module.BusinessObjects.Firm");
            if (firmTypeInfo.FindMember("SmsList") == null)
            {
                AssociationAttribute assoc1 = new AssociationAttribute("Firm_SmsReports", typeof(SmsReport));
                xpDictionary.GetClassInfo("crm.net.Module", "crm.net.Module.BusinessObjects.Firm").
                    CreateMember("SmsList", typeof(XPCollection<Sms>), true,
                        new AssociationAttribute(),
                        assoc1);
            }

            if (xpDictionary.GetClassInfo(typeof(Sms)).FindMember("Firm") != null)
            {
                if(memberInfoSms.FindAttribute<AssociationAttribute>() == null)
                    memberInfoSms.AddAttribute(new AssociationAttribute("Firm_SmsReports", typeof(Sms)));
            }

            XafTypesInfo.Instance.RefreshInfo(firmTypeInfo.GetType());
            XafTypesInfo.Instance.RefreshInfo(typeof(Sms));
            ((XafMemberInfo)memberInfoSms).Refresh();
        }
    }

1 个答案:

答案 0 :(得分:0)

打开模型设计器(在运行时) - 找到“Firm_DetailView”。

检查它是否有属性“SmsList” 如果不是 - 在模型中手动添加

转到布局 - 并将该属性添加到布局