Rumah >Operasi dan penyelenggaraan >Keselamatan >Cara menggunakan roda skrol XtraGrid untuk membelok halaman
Memusing halaman roda dan memusing halaman penghantaran lebih mudah Selepas beberapa perbincangan dan pemikiran, akhirnya saya melaksanakan pusingan halaman roda tetikus dalam GridView XtraGrid.
Saya mencipta komponen baharu yang mewarisi GridControl asal, dan menambah ImageList pada komponen untuk menyimpan beberapa imej sumber. Digunakan untuk mencapai kesan grafik dinamik.
Tambahkan parameter perwakilan tersuai dan penghitungan Parameter perwakilan digunakan untuk menghantar maklumat halaman.
public class PagingEventArgs : EventArgs { public int PageSize { get; set; } public int PageIndex { get; set; } } public enum LoadState { /// <summary> /// 就绪 /// </summary> Ready, /// <summary> /// 正在读取 /// </summary> Loading, /// <summary> /// 读取完成 /// </summary> Finish }
Tambahkan medan berikut dalam kelas komponen
/// <summary> /// 页面大小 /// </summary> private int _int_page_size=20; /// <summary> /// 当前页索引 /// </summary> private int _int_page_index=1; /// <summary> /// 总记录数 /// </summary> private int _int_record_count; /// <summary> /// 读取状态 /// </summary> private LoadState _LodaState_state;
Tambah atribut berikut
(!IsPaging) (!IsPaging) = (value>,
{
sementara (this.mainview.datarowcount & gt; 0)
GridView_main_view.DeleteRow(0);
ialah beberapa kawalan Tetapan boleh ditukar mengikut keutamaan peribadi.
} } /// <summary> /// 每次读取的行数 /// </summary> public int PageSize { get { if (!IsPaging) return 0; return _int_page_size; } set { if (!IsPaging) return ; _int_page_size = value; } } /// <summary> /// 总页数 /// </summary> private int PageCount { get { if (RecordCount % PageSize == 0) return RecordCount / PageSize; return RecordCount / PageSize + 1; } } /// <summary> /// Grid /// </summary> private GridView _GridView_main_view { get { return (GridView)this.MainView; } } /// <summary> /// 是否启用分页 /// </summary> public bool IsPaging { get; set; }
/// <summary> /// 内部使用的委托 /// </summary> private delegate void myDelegate(); /// <summary> /// 滚动翻页的委托 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public delegate void ScrollingToPageEventHandler(object sender, PagingEventArgs e); /// <summary> /// 滚动翻页的事件 /// </summary> public event ScrollingToPageEventHandler OnScrollingToPage;
Acara TopRowChanged akan dicetuskan apabila baris pertama grid berubah, serupa dengan acara Tatal bar skrol. Dua utas dibuka di sini, utas pertama digunakan untuk membaca data, dan utas kedua digunakan untuk melaksanakan grafik dinamik. Kaedah yang dipanggil oleh kedua-dua utas adalah di bawah
/// <summary> /// 设置分页栏 /// </summary> private void InitEmbeddedNavigator() {this.EmbeddedNavigator.CustomButtons.AddRange(new DevExpress.XtraEditors.NavigatorCustomButton[] { new DevExpress.XtraEditors.NavigatorCustomButton(-1, -1, true, false, "", null)}); this.EmbeddedNavigator.TextStringFormat = " 当前 {1} 行数据 "; this.UseEmbeddedNavigator = true; } /// <summary> /// 设置gridView /// </summary> private void InitGridView() { _GridView_main_view.TopRowChanged += new EventHandler(gridView_TopRowChanged); }
Walau bagaimanapun, terdapat masalah dengan kod ini Apabila sumber data yang terikat pada GridControl mempunyai anak daripada kejadian yang sama, acara TopRowChanged akan dicetuskan secara berterusan sebagai RefreshData. kaedah dipanggil. Sebab yang tepat masih belum jelas Penyelesaian kepada masalah ini adalah sama ada mengalih keluar sub-item contoh yang sama pada sumber data atau tidak memanggil kaedah RefreshData.
Atas ialah kandungan terperinci Cara menggunakan roda skrol XtraGrid untuk membelok halaman. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!