SoFunction
Updated on 2025-03-07

Simple general basic dictionary implementation method in C#


using System;
using ;
using ;
using ;
using Alif.Alif_WSAPI;
using ;
using ;

namespace
{
    /// <summary>
    ///
    /// </summary>
    public class PagingCtrl
    {
        /// <summary>
/// Page size
        /// </summary>
        private int _PageSize = 50;

        /// <summary>
/// Page index
        /// </summary>
        private int _PageIndex = 1;

        /// <summary>
/// Number of records
        /// </summary>
        private int _RecodeCount = 0;

        /// <summary>
/// Number of pages
        /// </summary>
        private int _PageCount = 0;

        /// <summary>
/// The callback function obtains the XML data parameters to query the data
        /// </summary>
        /// <param name="PageIndex"></param>
        /// <param name="PageSize"></param>
        /// <returns></returns>
        public delegate string LoadXML(int PageIndex, int PageSize);

        /// <summary>
/// Events that occur after reading data are used to notify customers
        /// </summary>
        public delegate void afterDataLoadDelegate();

        /// <summary>
/// Events that occur before reading data are prompted to wait
        /// </summary>
        public delegate void beforeDataLoadDelegate();

        /// <summary>
///Occurs when an error occurs when reading data, used for error processing
        /// </summary>
        public delegate void errorDataLoadDelegate(string ErrMSG);

        /// <summary>
/// Home button
        /// </summary>
        _btFirst;

        /// <summary>
/// Front page button
        /// </summary>
        _btPreview;

        /// <summary>
/// Next page button
        /// </summary>
        _btNext;

        /// <summary>
///Last page button
        /// </summary>
        _btLast;

        /// <summary>
/// Refresh button
        /// </summary>
        _btreflesh;

        /// <summary>
/// Label for record number prompt
        /// </summary>
        _msg;

        /// <summary>
/// Number of records per page combo
        /// </summary>
        _comPageSize;

        /// <summary>
/// Current page index combo
        /// </summary>
        _comToPageIndex;

        /// <summary>
/// datagridview showing data
        /// </summary>
        .C1FlexGrid.C1FlexGrid _dv;

        LoadXML _loadxml;
        afterDataLoadDelegate _afterDataLoad;
        beforeDataLoadDelegate _beferDataLoad;
        errorDataLoadDelegate _errorDataLoad;

        public string _webseiviceComm = "";

        /// <summary>
/// Constructor
        /// </summary>
/// <param name="btFirst">Home</param>
/// <param name="btPreview">Previous page</param>
/// <param name="btNext">Next page</param>
/// <param name="btLast">Last Page</param>
/// <param name="btreflesh">Refresh</param>
/// <param name="msg">Total x pages, number of records: x</param>
/// <param name="PageSize">Page Size</param>
/// <param name="PageIndex">Page Index</param>
/// <param name="dv">datagridview showing data</param>
/// <param name="webseiviceComm">Command number</param>
/// <param name="loadxmlCallBack">parameters</param>
/// <param name="beferfireCallBack">Callback function processed before loading</param>
/// <param name="afterfireCallBack">Callback function processed after loading</param>
/// <param name="errorfireCallBack">Callback function for error handling</param>
        public PagingCtrl( btFirst,
                                    btPreview,
                                    btNext,
                                    btLast,
                                    btreflesh,
                                    msg,
                                    PageSize,
                                    PageIndex,
                                    .C1FlexGrid.C1FlexGrid dv,
                                    string webseiviceComm,
                                    LoadXML loadxmlCallBack,
                                    beforeDataLoadDelegate beferfireCallBack,
                                    afterDataLoadDelegate afterfireCallBack,
                                    errorDataLoadDelegate errorfireCallBack)
        {
            _btFirst = btFirst;
            _btPreview = btPreview;
            _btNext = btNext;
            _btLast = btLast;
            _msg = msg;
            _dv = (.C1FlexGrid.C1FlexGrid)dv;
            _loadxml = loadxmlCallBack;
            _webseiviceComm = webseiviceComm;
            _comPageSize = PageSize;
            _comToPageIndex = PageIndex;
            _btreflesh = btreflesh;
            _beferDataLoad = beferfireCallBack;
            _afterDataLoad = afterfireCallBack;
            _errorDataLoad = errorfireCallBack;

            if (_btFirst != null)
            {
                _btFirst.Click += new (this.btFirst_Click);
            }
            if (_btPreview != null)
            {
                _btPreview.Click += new (this.btUp_Click);
            }
            if (_btNext != null)
            {
                _btNext.Click += new (this.btNext_Click);
            }
            if (_btLast != null)
            {
                _btLast.Click += new (this.btLast_Click);
            }

            if (_comPageSize != null)
            {
                _comPageSize.SelectedIndexChanged += new (comPageSize_SelectedIndexChanged);
            }
            if (_comToPageIndex != null)
            {
                _comToPageIndex.SelectedIndexChanged += new EventHandler(comToPageIndex_SelectedIndexChanged);
                _comToPageIndex.Tag = "";
            }
            if (_btreflesh != null)
            {
                _btreflesh.Click += new (this.btReflesh_Click);
            }
        }

        /// <summary>
/// Call the webservice method to obtain data
        /// </summary>
        /// <param name="webservicecomm"></param>
        /// <param name="Xmlcommand"></param>
        public void LoadData(string webservicecomm, string Xmlcommand)
        {
            if (_comToPageIndex != null)
            {
//Prevent program reentering
                if (_comToPageIndex.Tag == null || _comToPageIndex.() == "1")
                {
                    return;
                }
                _comToPageIndex.Tag = "1";
            }

//Departure beforefire event
            if (_beferDataLoad != null)
            {
                _beferDataLoad();
            }

            ds;

            try
            {
                ds = LoadWebServiceData(webservicecomm, Xmlcommand);

                if (!("table0"))
                {
                    if(_dv.DataSource!=null)
                    {
                        ((DataTable)_dv.DataSource).Clear();
                    }
                }
                else
                {

                    _dv.DataSource = ["table0"];


                }

                this._PageSize = (["TabScript"].Rows[0]["PageSize"].ToString());
                this._PageIndex = (["TabScript"].Rows[0]["PageIndex"].ToString());
                this._RecodeCount = (["TabScript"].Rows[0]["Rows"].ToString());
                this._PageCount = this._RecodeCount / this._PageSize + 1;

                if (_comToPageIndex != null)
                {
                    _comToPageIndex.();
                    for (int i = 1; i <= this._PageCount; ++i)
                    {
                        _comToPageIndex.(());

                    }
                    _comToPageIndex.Text = this._PageIndex.ToString();
                }

                if (_msg != null)
                {
_msg.Text = "currently" + this._PageIndex + "page," + "total" + this._PageCount.ToString() + "page, number of records:" + this._RecodeCount.ToString();
                }

                if (_btFirst != null)
                {
                    _btFirst.Enabled = this._PageIndex <= 1 ? false : true;
                }
                if (_btPreview != null)
                {
                    _btPreview.Enabled = _btFirst.Enabled;
                }
                if (_btLast != null)
                {
                    _btLast.Enabled = this._PageIndex >= this._PageCount ? false : true;
                }

                if (_btLast != null)
                {
                    _btLast.Enabled = _btLast.Enabled;
                }
            }
            catch (Exception ex)
            {
//The webservice error occurred
                if (_errorDataLoad != null)
                {
_errorDataLoad("Connecting to WebService server failed (001)!\n\rError cause: " + );
                }
                if (_comToPageIndex != null)
                {
                    _comToPageIndex.Tag = "";
                }
            }

            if (_afterDataLoad != null)
            {
                _afterDataLoad();
            }

            if (_comToPageIndex != null)
            {
                _comToPageIndex.Tag = "";
            }
        }

        /// <summary>
        ///
        /// </summary>
        /// <param name="XmlComm"></param>
        public void LoadData(string XmlComm)
        {
            LoadData(_webseiviceComm, XmlComm);

        }

        /// <summary>
        ///
        /// </summary>
        public void LoadData()
        {
            LoadData(_webseiviceComm, _loadxml(this._PageIndex, this._PageSize));
        }

        /// <summary>
/// Load web service data
        /// </summary>
/// <param name="cmdID">Command number</param>
/// <param name="para">parameters</param>
/// <returns>Dataset</returns>
        private DataSet LoadWebServiceData(string cmdID, string para)
        {
            int tt;
            string errmsg = "";
            ds = new DataSet();
            try
            {
                tt = ().Execute("DataServices", cmdID, "1", para, out errmsg, out  ds);
            }
            catch (Exception ex)
            {
//The webservice error occurred
throw new Exception("Failed to connect to the WebService server (001)!\n\rError reason: " + );
            }

            if (tt == 1)
            {
//The data is successfully obtained
                return ds;
            }
            else
            {
//Get keystring error
throw new Exception("The server returns failure information (002)!\n\rError reason: " + errmsg);
            }
        }

        /// <summary>
/// refresh
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btReflesh_Click(object sender, EventArgs e)
        {
            LoadData();
        }

        /// <summary>
/// Next page
        /// </summary>
        public void NextPage()
        {
            this._btNext.PerformClick();
        }

        /// <summary>
/// Next page
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btNext_Click(object sender, EventArgs e)
        {
            _PageIndex++;
            LoadData();
        }

        /// <summary>
/// Previous page
        /// </summary>
        public void UpPage()
        {
            this._btPreview.PerformClick();
        }

        /// <summary>
/// Previous page
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btUp_Click(object sender, EventArgs e)
        {
            --_PageIndex;
            LoadData();
        }

        /// <summary>
/// front page
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btFirst_Click(object sender, EventArgs e)
        {
            _PageIndex = 1;
            LoadData();
        }

        /// <summary>
/// front page
        /// </summary>
        public void FirstPage()
        {
            this._btFirst.PerformClick();
        }

        /// <summary>
/// Last page
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btLast_Click(object sender, EventArgs e)
        {
            _PageIndex = _PageCount;
            LoadData();
        }

        /// <summary>
/// Last page
        /// </summary>
        public void LastPage()
        {
            this._btLast.PerformClick();
        }

        /// <summary>
/// combobox select to change page number
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void comPageSize_SelectedIndexChanged(object sender, EventArgs e)
        {
            this._PageSize = (_comPageSize.Text);
            LoadData();
        }

        /// <summary>
/// Which page to turn to
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void comToPageIndex_SelectedIndexChanged(object sender, EventArgs e)
        {
            this._PageIndex = (_comToPageIndex.Text);
            LoadData();
        }
    }
}