/// <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(); } } }
/// <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); } }