首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按另一个属性的值筛选属性

按另一个属性的值筛选属性
EN

Stack Overflow用户
提问于 2014-12-13 00:58:03
回答 1查看 479关注 0票数 0

我有两个下拉列表。他们中的任何一个都没有关系。但我需要根据另一个下拉列表的选择值来过滤一个下拉列表。

我可以在代码中过滤它。当我调试时,我可以在属性上看到过滤后的结果。然而,当我运行这个应用程序时,它不工作。到目前为止,我的代码如下:

代码语言:javascript
复制
    private BindingList<Commodity> _AllocationCommodities;
    [Browsable(false)]
    public BindingList<Commodity> AllocationCommodities
    {
        get
        {
            if (_AllocationCommodities == null)
            {
                _AllocationCommodities = new BindingList<Commodity>();
                ChangeCommodities();
            }
            return _AllocationCommodities;
        }
    }
    private SourceEntity _SourceEntity;
    [ImmediatePostData]
    [Association("SourceEntity-LimitAllocations")]
    [RuleRequiredField("RuleRequiredField_LimitAllocation_SourceEntity", DefaultContexts.Save)]

    public SourceEntity SourceEntity
    {
        get
        {
            return _SourceEntity;
        }
        set
        {    

            //New Code
            if (SetPropertyValue<SourceEntity>("SourceEntity", value))
            {
                if (IsSaving || IsLoading) return;
                ChangeCommodities();
            }
        }
    }
    private Commodity _Commodity;// This is the drop down to be filtered
    [ImmediatePostData]
    [DataSourceProperty("AllocationCommodities")] //// This Attribute Should filter Commodities                 
    [RuleRequiredField("RuleRequiredField_LimitAllocation_Commodity", DefaultContexts.Save)]
    public Commodity Commodity
    {
        get
        {
            return _Commodity;
        }
        set
        {
            SetPropertyValue("Commodity", ref _Commodity, value);
            if (Commodity.Oid != Guid.Empty)
                AllocationVolumeUnits.Reload();
        }
    }
    private void ChangeCommodities()
    {
        if (!this.IsLoading && _SourceEntity != null)
        {
            _AllocationCommodities.RaiseListChangedEvents = false;
            _AllocationCommodities.Clear();
            OperandValue[] _params;
            System.Collections.Generic.List<CMSBOD.SourceCommodity> _sc = new System.Collections.Generic.List<SourceCommodity>();

            BindingList<Commodity> _Commodities = new BindingList<Commodity>();

            foreach (SourceCommodityEntity _tempSCE in _SourceEntity.SourceCommodityEntities)
            {
                if (_tempSCE.SourceCommodity != null)
                    _sc.Add(_tempSCE.SourceCommodity);
            }
            foreach (SourceCommodity _tempSC in _sc)
            {
                if (_tempSC.Commodity != null && !_Commodities.Contains<Commodity>(_tempSC.Commodity) && _tempSC.Commodity.IsActive)
                    _Commodities.Add(_tempSC.Commodity);
            }
            _AllocationCommodities.RaiseListChangedEvents = true;
            _AllocationCommodities = _Commodities;///This is where I can see the filtered list when debugging.


        }
    }
EN

回答 1

Stack Overflow用户

发布于 2014-12-13 23:55:32

在这种情况下,您可以发现替代DataSourceProperty的DataSourceCriteria很有用。

假设您有将Commodity重新关联到SourceCommodityEntity的集合属性,您可以使用以下条件:

[SourceEntity(“IsActive和SourceCommodities[SourceCommodityEntitiesSourceEntity = '@SourceEntity‘]")]

即使它被设计为1x1关联,您也可以发现关联对于过滤目的很有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27448457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档