Lookuptan açtığımız herhangi bir browserdaki grid'ten çoklu satırı elle seçip kod yardımı ile başka bir gride aktarım yapabiliriz.
Örnek olarak aşağıdaki adımları inceleyiniz.
1 - Çağırılacak olan Browser'ın eventHandler sınıfı IDataGridSelectionKeyListener interface eklenir.
onInitilaze metodu örnekteki gibi gerçeklenir.
public void onInitialize(JLbsXUIControlEvent event)
{
JLbsQuerySelectionGridgrid = event.getContainer().getComponentByTag(100);
grid.setDataGridSelectionListener(this);
}
2 - Browser'ın OnGridSetLookUp event'ına metod tanımı örnekteki gibi yapılır.
- Çoklu satır seçimi yapıldığında seçilen satırlar multiselectionList parametresine atanır.
Not: Eventhandler sınıfımıza interface olarak IDataGridSelectionKeyListener eklemiştik.
Bu nedenle getKeyAssociatedData metodunuda örnekteki gibi değiştirmemiz gerekecektir.
public void onGridSetLookupData(JLbsXUIDataGridEvent event)
{
JLbsQuerySelectionGrid grid = (JLbsQuerySelectionGrid) event.getContainer().getComponentByTag(100);
JLbsXUILookupInfo lookupInfo =(JLbsXUILookupInfo) event.getLookupData();
lookupInfo.getParameters().put("MultiSelectionList", grid.getMultiSelectionList());
}
public Object getKeyAssociatedData(Object key, Object obj)
{
return obj;
}
3 - LookUp işlemini ile oluşturulan grid’in onInvoke tanımlarına kendi metodumuzu ekleyelim.
4 - Metodun birinci kısmı;
seçim yapılacak browserdan seçili alanlar gride alınır.
JLbsXUILookupInfo info = new JLbsXUILookupInfo(); boolean ok = m_Container.openChild("Forms/CBFStudent.lfrm", info, true, JLbsXUITypes.XUIMODE_DBSELECT); if ((!ok) || (info.getResult() <= 0)) return; MultiSelectionList list = (MultiSelectionList) info.getParameter("MultiSelectionList"); usersGrid = (com.lbs.grids.JLbsObjectListGrid) m_Container.getComponentByTag(2000015);
5 - Metodun ikinci kısmı;
- Datalar form üzerindeki gride atama işlemi gerçekleştirir.
for (int i = 0; i <list.size(); i++) {
QueryObjectIdentifier qId =(QueryObjectIdentifier) list.get(i);
QueryBusinessObject qbo =(QueryBusinessObject) qId.getAssociatedData();
CustomBusinessObject gridLineObject = ProjectUtil.createNewCBO("CBOCourseLine");
CustomBusinessObject studentlink = ProjectUtil.createNewCBO("StudentLink");
ProjectUtil.setMemberValueUn(gridLineObject, "StudentLink",studentlink);
ProjectUtil.setMemberValueUn(gridLineObject,"StudentLink.Name", QueryUtil.getStringProp(qbo, "NAME"));
ProjectUtil.setMemberValueUn(gridLineObject,"StudentLink.SurName",QueryUtil.getStringProp(qbo,"SURNAME"));
ProjectUtil.setMemberValueUn(gridLineObject,"StudentLink.Gender", QueryUtil.getIntProp(qbo, "GENDER"));
ProjectUtil.setMemberValueUn(gridLineObject, "Price", 123);
usersGrid.getObjects().set(usersGrid.getObjects().size()-1, gridLineObject);
addNewUserLine();
}
public void onClickSelectSubscriber(ILbsXUIPane container, Object data, IClientContextcontext) {
JLbsXUILookupInfo info = new JLbsXUILookupInfo();
boolean ok = m_Container.openChild("Forms/CBFStudent.lfrm",info, true, JLbsXUITypes.XUIMODE_DBSELECT);
if ((!ok) || (info.getResult() <= 0))
return;
MultiSelectionList list =(MultiSelectionList) info.getParameter("MultiSelectionList");
usersGrid = ((com.lbs.grids.JLbsObjectListGrid) m_Container.getComponentByTag(2000015));
for (int i = 0; i <list.size(); i++) {
QueryObjectIdentifier qId =(QueryObjectIdentifier) list.get(i);
QueryBusinessObject qbo =(QueryBusinessObject) qId.getAssociatedData();
CustomBusinessObject gridLineObject = ProjectUtil.createNewCBO("CBOCourseLine");
CustomBusinessObject studentlink = ProjectUtil.createNewCBO("StudentLink");
ProjectUtil.setMemberValueUn(gridLineObject,"StudentLink",studentlink);
ProjectUtil.setMemberValueUn(gridLineObject,"StudentLink.Name", QueryUtil.getStringProp(qbo, "NAME"));
ProjectUtil.setMemberValueUn(gridLineObject,"StudentLink.SurName", QueryUtil.getStringProp(qbo, "SURNAME"));
ProjectUtil.setMemberValueUn(gridLineObject, "StudentLink.Gender", QueryUtil.getIntProp(qbo, "GENDER"));
ProjectUtil.setMemberValueUn(gridLineObject, "Price", 123);
usersGrid.getObjects().set(usersGrid.getObjects().size()-1,gridLineObject);
addNewUserLine();
}
}
6 - Gride ilk kayıt ekleme işlemi sonrası yeni bir satır daha eklemek için bu metodu kullanılması gerekmektedir.
private void addNewUserLine() {
CustomBusinessObject user = ProjectUtil.createNewCBO("CBOCourseLine");
CustomBusinessObjects users = (CustomBusinessObjects)ProjectUtil.getMemberValue(cbo, "LineLink");
users.add(user);
}