Пример #1
0
        /// <summary>
        /// 引发一个删除选中记录的事件。
        /// </summary>
        public void DoRemoveRow()
        {
            if (this.dataGridView1.SelectedRows.Count == 0)
            {
                return;
            }

            System.Collections.Generic.List <DataRow> l = new List <DataRow>();
            foreach (DataGridViewRow tmp in this.dataGridView1.SelectedRows)
            {
                l.Add(((DataRowView)tmp.DataBoundItem).Row);
            }
            if (this._DeleteRowClick != null)
            {
                foreach (var tmp in l)
                {
                    RemoveRowEventArgs rre = new RemoveRowEventArgs();
                    rre.dataRow = tmp;
                    this._DeleteRowClick(this, rre);
                }
            }
            else
            {
                foreach (var tmp in l)
                {
                    tmp.Delete();
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 引发一个刷新数据事件。
        /// </summary>
        public void DoRefreshData()
        {
            if (!this.CustomSave && this.HasChanges())
            {
                switch (MessageBox.Show(this, "数据已经变更,需要保存吗?", "", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1))
                {
                case DialogResult.Yes:
                    this.DoSave();
                    if (this.HasChanges())     //如果执行保存操作后仍然有未保存的数据(例如保存数据失败)则结束此方法。
                    {
                        return;
                    }
                    break;

                case DialogResult.No:
                    break;

                case DialogResult.Cancel:
                default:
                    return;
                }
            }

            if (this._OnRequestNewPage != null)
            {
                this.ClearData();
                //if (this.CurrentPageIndex >= this.PagesCount) //如果请求了新页,则引发此事件,以便通知用户从服务器加载数据。
                {
                    DataTable data = new DataTable();
                    RequestNewPageEventArgs pice = new RequestNewPageEventArgs(0, this.PageSize, data);
                    this._OnRequestNewPage(this, pice);
                    //if (data.Rows.Count > 0)
                    {//没有数据也要显示表头。
                        data.TableName    = this.CurrentPageIndex.ToString();
                        data.RowDeleting += delegate(object rdsender, DataRowChangeEventArgs drcea)
                        {
                            if (this._RowDeleting != null)
                            {
                                RemoveRowEventArgs rre = new RemoveRowEventArgs();
                                rre.dataRow = drcea.Row;
                                this._RowDeleting(this, rre);
                            }
                        };
                        if (this.DataSource.Tables.Contains(this.CurrentPageIndex.ToString()))
                        {
                            DataTable dtmp = this.DataSource.Tables[this.CurrentPageIndex.ToString()];
                            this.DataSource.Tables.Remove(dtmp);
                            dtmp.Dispose();
                        }
                        this.DataSource.Tables.Add(data);
                        //{
                        //    this.bindingSource.DataMember = this.CurrentPageIndex.ToString();
                        //}
                        this.CanRequestNewPage = data.Rows.Count >= this.PageSize;
                        this.CurrentPageIndex  = 0;
                        //this.RebindData();
                        if (this._RequestFirstPageEvent != null)
                        {
                            this._RequestFirstPageEvent(this, new EventArgs());
                        }
                        if (this._RequestNewPageSuccess != null)
                        {
                            this._RequestNewPageSuccess(this, new EventArgs());
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show(this, "没有处理 OnRequestNewPage 事件,这将导致永远没有可用数据!", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }