بتاريخ: 21 أكتوبر 201312 سنة comment_241379 السلام عليكم كان موجود فى الفورم system variable اسمه :system.record_status و كان ممكن تستخدمة للتعرف على حالة السجل new – modified و اكيد التعرف على حالة السجل هيفيدك كتير فى ال adf كمان ممكن تعمل حاجة ذى دى لكن مش بالبساطة الموجودة فى الفورمز و ذلك لان الدنيا فى ال adf مفصولة عن بعضها مش كلها فى layer واحد ذى الفورم فى المثال التالي هنعرف ازاى نعمل method ترجعلك حالة السجل و ازاى نستخدمها فى الصفحة 1- In the model project , go to the view object and click on java tab and generate the following java classes · View object class “ViewImpl” · View Row class “View row impl” كما بالشكل بالشكل المرفق رقم 1 لاحظ انا عملت generate لل view row class لان الكلاس دى هى اللى بتمثلي السجل اللى انا هتعرف على حالته اما الview object class فهى الكلاس اللى هكتب فيها الميثود كما بالشكل 2- In the view object class write this methods public String getRowStatus(Row row) { EduTranDetailsVORowImpl rwImpl = (EduTranDetailsVORowImpl) row; String rwStatus = translateStatusToString(rwImpl.getEntity(0).getEntityState()); return rwStatus; } private String translateStatusToString(byte { String ret = null; switch ( { case Entity.STATUS_INITIALIZED: { ret = "Initialized"; break; } case Entity.STATUS_MODIFIED: { ret = "Modified"; break; } case Entity.STATUS_UNMODIFIED: { ret = "Unmodified"; break; } case Entity.STATUS_NEW: { ret = "New"; break; } } return ret; } الشرح: فى الميثود الاولى getRowStatus دى بتاخد باراميتر من نوع ROW . يعنى بتبعتلها السجل كله ك PARAMETER علشان ترجع حالته طيب اية هو السجل دة؟ هو السجل اللى من النوع ال View Row class اللى عملتلها GENERATE اللى هى اصلا بتمثل ال ROW فى المثال هنا اسمها EduTranDetailsVORowImpl طبعا هتغير اسمها حسب ما هو موجود عندك يعنى مثلا لو عندك ال view اسمها EmployeeView هتلاقى الكلاس اسمها EmployeeViewRowImpl طيب انا فى الحقيقة مقدرش اعرف حالة السجل من خلال ال view لان ال view اصلا بتمثل SQL Query Statement يعنى مش بتمثل السجل و لكن اللى بيمثل السجل فى ال ADF هو ال Entity Object لكن انا من خلال ال View اقدر اوصل لل Entity object بتاعها اللى هى اصلا مبنيه عليه و ذلك من خلال الميثود اللى اسمها getEntity و من خلال ال entity اقدر احصل على حالة السجل من خلال الميثود اللى اسمها getEntityState الكلا اللى انا قولته دة هو معنى السطر دة rwImpl.getEntity(0).getEntityState() طيب بس ال status دى بترجعلى فى شكل ارقام 1 و 2 و 3 و 4 و انا عاوز احولها لنص مفهم ذى New - Modified - Unmodified و دة بقى اللى بتعمله الميثود التانية translateStatusToString 3 - add the getRowStatus () method as a client interface شوف الصورة رقم 2 المرفقه للتوضيح و احنا عملنا الخطوة رقم 3 دى علشان نبعت الميثود لل data control علشان نقدر نستخدمها 4- DataBinding اعمل refresh للداتا كونترول و افتح ال view object بتاعك عتلاقى operation جددة فيه اسمها getRowStatus علشان تضيفها للصفحة بتاعتك اعمل التالي روح على الصفحة بتاعتك اضغط على bindings tab روح على ال structure window right click on Bindings - insert inside bindings generic bindings - method action الصورة رقم 4 موضوحة الخطوة دى هيظهرلك بعد كدة ال dialog اللى فى الصورة المرفقة رقم 5 و اللى بيسالك هى فين الميثود اللى انت عاوز تعملها bindings اختار الميثود و كمان ابعتلها ال parameter بتاعك اللى هو من نوع Row و اللى فى الحالة دى هيبقى السجل الحالى "currentRow" لل iterator بتاعك يعنى هيبقى مثلا #{bindings.EduTranDetailsVO1Iterator.currentRow} كما هو موضح بالشكل رقم 6 5- اخر حاجة بقى و هو انك تستخدم الميثود دى فى ال managed bean بتاعتك عادى مثل اى ميثود مثال DCIteratorBinding eduDtl = bindings.findIteratorBinding("EduTranDetailsVO1Iterator"); OperationBinding getRowStatusBinding = bindings.getOperationBinding("getRowStatus"); String rwStatus = (String) getRowStatusBinding.execute(); if ("NEW".equalsIgnoreCase(rwStatus)) { System.out.println("record status is "+rwStatus); } تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.