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;
}
}
}
{
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;
}
}
}