ASP.Net: Error FocusedRowIndex Saat Penggunaan Endless Paging Pada DevExpress 13.2.9


Baru saja saya mengalami error saat melakukan proses editing data pada datagrid yang di buat dengan DevExpress 13.2.9, selanjutnya saya sebut saja DevExpress.

Pager pada DevExpress
Error terjadi setelah mode pager pada datagrid saya ubah dari yang defaultnya menggunakan pagination angka, saya ubah menjadi Endless paging, dengan maksud untuk membuatnya ter-load otomatis ketika data saya scroll kebawah.

Mode diganti menjadi EndlessPaging
Usut punya usut error terjadi karena event pada menu update yang saya buat terpisah dari datagrid ternyata tidak bisa melemparkan index sesuai pada baris yang dipilih (focused).

Kira-kira begini tampilan aplikasi dan kodingan yang sudah terlanjur dibuat:

A. Event update/edit menggunakan double click pada baris yang dipilih
Pada gambar terlihat tabel dengan baris berisi data. Dan data tersebut akan saya edit. Ada 2 cara untuk melakukan pengeditan. Pertama dengan cara melakukan double click pada baris yang akan diedit dan yang kedua dengan cara menekan menu diatas tabel tersebut.

Yang pertama saya bahas adalah mengedit data dengan cara melakukan double click pada baris yang dipilih. Pada contoh kali ini saya mengedit baris ke-2. Lihat pada kolom Akta, data pada kolom Akta yang saya pilih berisi angka 1788.

Double click pada baris yang ingin di edit/update

Sesaat setelah saya double click pada baris data tersebut, terlihat pada kodingan, efek double click tadi menjalankan fungsi performGVDblClick.

 
Yang terjadi pada kodingan, double click tadi menjalankan fungsi performGVDblClick

Lalu yang terjadi didalam fungsi performGVDblClick adalah melakukan performcallback atau meneruskan perintah ke server sesuai dengan paramater yang di bawa dari klien. Parameter yang dibawa dari klien adalah string EDIT.

Melakukan performCallBack dengan membawa parameter 'EDIT'

Di server, performcallback tadi diolah sesuai dengan parameter yang dibawa. Bisa kita lihat pada parameter EDIT menjalankan fungsi fDoEditGV.

Menjalankan fungsi fDoEditGV

Dimana didalam fungsi fDoEditGV salah satunya berfungsi untuk mendapatkan index dari baris data yang dipilih dati aplikasi tadi.

salah satu fungsi fDoEditGV untuk mendapatkan index dari baris data yang di pilih

Sampai disini sudah terlihat bahwa data yang akan diedit sudah cocok dengan data yang dipilih dari tampilan aplikasi.

Data yang diedit sudah sesuai

Jika pada baris data diaplikasi yang dipilih tadi adalah baris ke-2, maka sesuai kodingan haruslah mendapatkan index bernilai 1, karena urutan index pada kodingan dimulai dari angka 0.


B. Event update/edit menggunakan menu diatas tabel
Sekarang akan saya bahas penggunaan menu diluar tabel untuk melakukan pengeditan data, nama menu tersebut jika dilihat pada kodingan adalah gvMnuEdit. Untuk contoh masih sama yaitu baris ke-2 yang akan saya edit. Lihat pada kolom Akta, data pada kolom Akta yang saya pilih berisi angka 1788.

Baris yang dipilih masih sama tetapi menggunakan menu edit untuk mengedit data

Sesaat setelah saya tekan menu edit di atas tabel tersebut menjalankan fungsi doShowUpdateGV1.

Menjalankan doShowUpdateGV1

Lalu yang terjadi didalam fungsi doShowUpdateGV1 adalah memvalidasi terlebih dahulu apakah ada data yang dipilih atau belum. Jika belum maka akan mengeluarkan message box berupa peringatan belum ada data yang dipilih, jika sudah maka perintah edit akan diteruskan ke server.

Perintah edit diteruskan ke server

Di server, perintah tadi diolah sesuai dengan parameter yang dibawa. Bisa kita lihat pada parameter EDIT menjalankan fungsi fDoEditGV.

Menjalankan fungsi fDoEditGV sesuai nama menu

Dimana didalam fungsi fDoEditGV salah satunya berfungsi untuk mendapatkan index dari baris data yang dipilih dati aplikasi tadi.

iVisIndex mendapatkan nilai yang salah

Sampai disini sudah terlihat bahwa data yang akan diedit tidak cocok dengan data yang dipilih dari tampilan aplikasi.

Data yang diedit tidak sesuai

Karena nilai yang didapatkan adalah 0. Jika pada baris data diaplikasi yang dipilih tadi adalah baris ke-2, maka sesuai kodingan haruslah mendapatkan index bernilai 1, karena urutan index pada kodingan dimulai dari angka 0.

Penyelesaian
Untuk mengatasi permasalahan tersebut maka saya memutuskan untuk membelokkan event pada menu edit agar sama seperti event pada saat double click. Dan kodingannya menjadi seperti berikut:

Add caption
Yang diubah adalah fungsi doShowUpdateGV1, dari yang sebelumnya jika validasi baris terpilih selesai perintah dan mendapatkan nilai true akan dilanjutkan ke server sesuai dengan nama menu. Maka, sekarang setelah validasi baris terpilih selesai dan mendapatkan nilai true akan menjalankan performcallback seperti pada event double click.

Dari penyelesaian tersebut aplikasi yang saya buat bisa berjalan sesuai harapan. Alhamdulillah.

Sumber:
1. Pager pada DevExpress. Gb: https://demos.devexpress.com/ASPxGridViewDemos/PagingAndScrolling/EndlessPaging.aspx

0 Response to "ASP.Net: Error FocusedRowIndex Saat Penggunaan Endless Paging Pada DevExpress 13.2.9"

Posting Komentar