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;
}
}
}
有多对对关系对象,想为从对象选择数据录入从别的相关对象。
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;
}
}
}
相关文章推荐
- JavaScript 弹出窗体点击按钮返回选择数据的实现
- JavaScript 弹出窗体点击按钮返回选择数据的实现
- WinForm与WebForm弹出窗体选择数据到父窗体
- XAF 如何从ListView中直接选择数据用Analysis功能分析数据
- JavaScript 弹出窗体点击按钮返回选择数据的实现
- vs2005C# winfrom开发中如何在textbox输入的时候自动模糊的弹出可选数据的窗体?
- JavaScript 弹出窗体点击按钮返回选择数据的实现
- 关于 JavaScript弹出窗体 点击按钮返回选择数据 的实现
- 做项目时,如何做比较美观大方的数据输入窗体
- jQuery Mobile如何禁止长按和页面选择弹出的复制对话框
- 如何在IE, Firefox, Opera浏览器中支持页面弹出并回传数据
- 如何点击按钮弹出新窗口,输入数据后返回并刷新页面?
- 如何实现多窗体数据同步?
- 一张图告诉你如何分析数据以及选择算法
- WPF制作子窗体的弹出动画效果
- 在dll工程中使用mfc资源,窗体无法弹出如何解决?(文章内容均系转载,读者尚未理解)
- C/S模式开发中如何利用WebBrowser控件制作导航窗体
- 使用弹出窗体修改数据,之后返回值
- 如何在IE,Firefox,Opera浏览器中支持页面弹出并回传数据