كيفية التعامل مع الأحداث داتاغريد العمود من مقدم?
سؤال
أنا أستخدم غوت مفب وأود أن التعامل مع الأحداث في أعمدة داتاغريد من مقدم.من عند غوت داتاغريد معرض ...
// First name.
Column<ContactInfo, String> firstNameColumn =
new Column<ContactInfo, String>(new EditTextCell()) {
@Override
public String getValue(ContactInfo object) {
return object.getFirstName();
}
};
firstNameColumn.setSortable(true);
sortHandler.setComparator(firstNameColumn, new Comparator<ContactInfo>() {
@Override
public int compare(ContactInfo o1, ContactInfo o2) {
return o1.getFirstName().compareTo(o2.getFirstName());
}
});
dataGrid.addColumn(firstNameColumn, constants.cwDataGridColumnFirstName());
firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
@Override
public void update(int index, ContactInfo object, String value) {
// Here I would like to call RPC methods
}
});
dataGrid.setColumnWidth(firstNameColumn, 20, Unit.PCT);
المثال أعلاه ، يتم كتابة هذا الرمز في عرض الجانب وأنه مجرد مثال حقا.كنمط مفب ، أنا فقط بحاجة إلى استدعاء طلب ريك لتحديث قاعدة البيانات.هذا لا يمكن القيام به في عرض الجانب ولكن ليس لدي أي فكرة عن كيفية تعيين فيلدوبداتر من مقدم العرض الخاص بي.الرجاء مساعدتي كيف يمكنني معرفة ذلك ?شكرا جزيلا .
المحلول
هناك طريقتان للقيام بذلك (مفب الأول أو مفب الثاني الطريق):
مفب 1 نمط:
http://www.gwtproject.org/articles/mvp-architecture.html
إنشاء setter
على الخاص بك View
(أي. setFieldUpdater(FieldUpdater<ContactInfo, String>)
) أن يأخذ FieldUpdater
ويضيف إلى العمود.من ال Presenter
يمكنك الاتصال (بشرط أن view
هي الإشارة إلى وجهة نظرك).
مقدم:
view.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
@Override
public void update(int index, ContactInfo object, String value) {
// Make the RPC call
}
});
إم في بي 2 ستايل:
http://www.gwtproject.org/articles/mvp-architecture-2.html
إذا كان لديك مرجع من View
العودة إلى الخاص بك Presenter
.ثم يمكنك استدعاء وظيفة على الخاص بك Presenter
.
عرض:
firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
@Override
public void update(int index, ContactInfo object, String value) {
getPresenter().onUpdate(info,value);
}
});