您的位置:首页 > 其它

XAF中如何制作弹出窗体选择数据到ListView列表

2009-12-08 11:58 681 查看
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;
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: