zoukankan      html  css  js  c++  java
  • XAF中如何制作弹出窗体选择数据到ListView列表

    1.问题:

             有多对对关系对象,想为从对象选择数据录入从别的相关对象。

    2.实现思路:

        A.弹出选择窗体,从中选出所需记录

           B.将A和B组合为从对象,保存

           C.修改主从对象列表为可编辑(在View 中 Item_Detail_ListView设置为可编辑)

    3.代码实现

       public partial class MP_Item_SelectOrderVC : ViewController
        {
            
    public MP_Item_SelectOrderVC()
            {
                InitializeComponent();
                RegisterActions(components);
            }

            
    protected override void OnActivated()
            {
                
    base.OnActivated();
                
    //按鈕在ViewId == "MP_Item_MP_ItemDetailCollection_ListView" 顯示
                pwsaSelectOrder.Active.SetItemValue("ViewId", View.Id == "MP_Item_MP_ItemDetails_ListView");// Application.FindListViewId(typeof(MP_ItemDetail)));

                
    //啟用Lookup查詢
                if (View.Id == Application.FindListViewId(typeof(MP_MRF)) && Frame.Template is ILookupPopupFrameTemplate)
                {
                    ((ILookupPopupFrameTemplate)Frame.Template).IsSearchEnabled 
    = true;
                    ListView listView 
    = ((ListView)View);
                    listView.CollectionSource.Criteria.Add(
    "EmptyCollectionCriteria", CollectionSource.EmptyCollectionCriteria);
                    listView.CollectionSource.Criteria.Changed 
    += delegate(object sender, EventArgs e)
                    {
                        
    //if (!ReferenceEquals(listView.CollectionSource.Criteria[FullTextSearchCriteriaBuilder.CriteriaName], null))
                        if (!ReferenceEquals(listView.CollectionSource.Criteria[FilterController.FullTextSearchCriteriaName], null))
                        {
                            listView.CollectionSource.Criteria.Remove(
    "EmptyCollectionCriteria");
                        }
                        
    else
                        {
                            
    if (!listView.CollectionSource.Criteria.ContainsKey("EmptyCollectionCriteria"))
                            {
                                listView.CollectionSource.Criteria.Add(
    "EmptyCollectionCriteria", CollectionSource.EmptyCollectionCriteria);
                            }
                        }
                    };
                }
            }

            
    private void pwsaSelectOrder_CustomizePopupWindowParams(object sender, CustomizePopupWindowParamsEventArgs e)
            {
                
    //創建彈出窗口視圖
                ObjectSpace objectSpace = Application.CreateObjectSpace();
                
    string applicationFindListViewId = Application.FindListViewId(typeof(MP_MRF));
                e.View 
    = Application.CreateListView(
                   applicationFindListViewId,
                   Application.CreateCollectionSource(objectSpace, 
    typeof(MP_MRF), applicationFindListViewId),
                   
    true
                );
            }

            
    private void pwsaSelectOrder_Execute(object sender, PopupWindowShowActionExecuteEventArgs e)
            {
                
    try
                {
                    
    //需要测试 
                    
    //2010-07-27
                    PropertyCollectionSource pcs = ((ListView)View).CollectionSource as PropertyCollectionSource;
                    MP_Item item 
    = pcs.MasterObject as MP_Item;//获取主对象实例
                    int i = 1;
                    
    if (item == nullreturn;
                    
    foreach (MP_MRF mrf in e.PopupWindow.View.SelectedObjects)
                    {
                        MP_ItemDetail detail 
    = null;//ObjectSpace.Session.FindObject<MP_ItemDetail>(new BinaryOperator("Material", "Sam"));
                        
    //if (detail == null)
                        
    //{
                            detail = new MP_ItemDetail(ObjectSpace.Session);
                            detail.Material 
    = mrf.COMPONENT;
                            detail.Material_Description 
    = mrf.COMPONENT_DESCRIPTION;
                            detail.Unit 
    = mrf.COMPONT_UNIT;
                            detail.Item_ID 
    = item ;
                            item.Note 
    = mrf.OrderNO;
                            
    //detail.Save();
                        
    //}
                        
    //給主對象賦值
                        if (i == 1//給主對象賦值,只賦值一次
                        {
                            item.OrderNO 
    = mrf.OrderNO;
                            item.PNO 
    = mrf.Material;
                            
    //item.PQty = mrf.Order_Qty;
                            item.PUnit = mrf.Unit;
                            item.Plnt 
    = mrf.Plnt;
                            
    //item.PDescription = mrf.Description;
                            i++;
                        }
                    }

                    
    View.ObjectSpace.CommitChanges();
                    
    View.ObjectSpace.Refresh();
                }
                
    catch (Exception ex)
                {
                      
    throw ex;
                }

            }

       
        }

    欢迎转载,转载请注明出处:http://www.cnblogs.com/Tonyyang/

  • 相关阅读:
    牛客网2017年校招全国统一模拟笔试(第三场)编程题集合
    侯捷STL学习(六)--深入list && Iterator traits
    侯捷STL学习(五)--allocator和容器之间的实现关系
    侯捷STL学习(四)--OOP-GP/操作符重载-泛化特化
    侯捷STL学习(三)--分配器测试
    侯捷STL学习(二)--序列容器测试
    牛客网2017年校招全国统一模拟笔试(第一场)编程题集合
    数据库面试题(一)
    SQL基础理论题
    基本SQL练习题--选课经典例题
  • 原文地址:https://www.cnblogs.com/Tonyyang/p/1619275.html
Copyright © 2011-2022 走看看