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  ==   null return ;
                
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;
            }

        }

   
    }

 

 

转载于:https://www.cnblogs.com/Tonyyang/archive/2009/12/08/1619275.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值