찾다
운영 및 유지보수안전XtraGrid 스크롤 휠을 사용하여 페이지를 넘기는 방법

휠 페이지 넘기기와 전송 페이지 넘기기가 더 편리해졌습니다. 몇 가지 논의와 고민 끝에 마침내 XtraGrid의 GridView에서 마우스 휠 페이지 넘기기를 구현했습니다.

원본 GridControl을 상속하는 새 구성 요소를 만들고 일부 리소스 이미지를 저장하기 위해 구성 요소에 ImageList를 추가했습니다. 동적 그래픽 효과를 얻는 데 사용됩니다.

사용자 정의 대리자 매개변수 및 열거를 추가합니다. 대리자 매개변수는 페이징 정보를 전달하는 데 사용됩니다.

    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
    }

구성 요소 클래스에 다음 필드를 추가합니다.

        /// <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;

다음 속성을 추가합니다

         
         
          (!IsPaging)   (!IsPaging) =
                (value>,

        GridView_main_view.DeleteRow(0);
      this.RefreshDataSource();
      }

            }
        }        /// <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>
        /// <param>
        public delegate void ScrollingToPageEventHandler(object sender, PagingEventArgs e);        /// <summary>
        /// 滚动翻页的事件        /// </summary>
        public event ScrollingToPageEventHandler OnScrollingToPage;
The 다음은 모든 사람의 선호에 따라 변경할 수 있는 컨트롤에 대한 일부 설정입니다.

        /// <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);
        }
컨트롤 이벤트에 대해 다음 메서드를 등록하세요.

       private void gridControl_Load(object sender, EventArgs e)
        {            if (IsPaging)
            {
                _LodaState_state = LoadState.Ready;

                InitEmbeddedNavigator();
                InitGridView();
            }
        }        private void gridView_TopRowChanged(object sender, EventArgs e)
        {            lock (this)
            {                if ( _int_page_index > PageCount || _LodaState_state != LoadState.Ready) return;
            }            //检查是否到达底部
            if (_GridView_main_view.IsRowVisible(_GridView_main_view.RowCount - 1) == RowVisibleState.Visible||
                _int_page_index==1)
            {                lock (this)//设置成开始读取状态                {
                    _LodaState_state = LoadState.Loading;
                }
                Thread thread_load_data = new Thread(new ThreadStart(LoadData));
                Thread thread_change_text = new Thread(new ThreadStart(ChangeLoadingImage));
                thread_change_text.Start();
                thread_load_data.Start();
            }
        }
TopRowChanged 이벤트는 스크롤 막대의 Scroll 이벤트와 유사하게 그리드의 첫 번째 행이 변경될 때 트리거됩니다. 여기서는 두 개의 스레드가 열려 있는데 첫 번째 스레드는 데이터를 읽는 데 사용되고 두 번째 스레드는 동적 그래픽을 구현하는 데 사용됩니다. 두 스레드에서 호출한 메서드는

         
         
          top_row_index =  focus_index =  (==
                 (OnScrollingToPage ==   Exception(= = = 
             (.Parent.Invoke( myDelegate(== (= LoadState.Finish; 
         
          p_w_picpath_index =  (.Parent.InvokeRequired).Parent.Invoke( myDelegate(.EmbeddedNavigator.Buttons.CustomButtons[].Visible =  () ( (_LodaState_state != LoadState.Loading)
                         (p_w_picpath_index == = ++ (
                    .Parent.Invoke( myDelegate(.EmbeddedNavigator.Buttons.CustomButtons[].ImageIndex = (.Parent.InvokeRequired).Parent.Invoke( myDelegate(.EmbeddedNavigator.Buttons.CustomButtons[].Visible =  (= ++
아래에 있습니다. 그러나 이 코드에는 GridControl에 바인딩된 데이터 소스에 동일한 인스턴스의 하위 항목이 있는 경우 RefreshData 메서드 호출과 함께 TopRowChanged 이벤트가 계속해서 트리거됩니다. 정확한 이유는 아직 알 수 없습니다. 이 문제에 대한 해결책은 데이터 소스에서 동일한 인스턴스 하위 항목을 제거하거나 RefreshData 메서드를 호출하지 않는 것입니다.

위 내용은 XtraGrid 스크롤 휠을 사용하여 페이지를 넘기는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 亿速云에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기