C# DEV GridView 的使用心得
阿新 • • 發佈:2018-12-14
最近做前後臺分離的專案,需要用表格展示資料,通過http返回資料,就想用用DEV 相關的控制元件進行展示,就做了一個GridView的視窗基類來處理資料,一下是這個基類
public partial class BaseUIForm : Form { protected BaseServerClass m_BaseServer; public BaseUIForm() { InitializeComponent(); } public void Init() { m_BaseServer.Init(ref this.gridControl1,ref this.gridView1); } protected void simpleButton1_Click(object sender, EventArgs e) { m_BaseServer.Add(); Init(); } #region 右鍵單擊事件 private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { //根據ContextMenuStrip Item 的name來判斷 if ((e.ClickedItem).Name == "updatadata") { m_BaseServer.Update(ref this.gridView1); } else if ((e.ClickedItem).Name == "deletedata") { m_BaseServer.Delete(ref this.gridControl1, ref this.gridView1); } else if((e.ClickedItem).Name == "refreshdata") { Init(); } } #endregion private void gridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e) { int intselect = gridView1.SelectedRowsCount; updatadata.Enabled = false; deletedata.Enabled = false; if (intselect == 1) { updatadata.Enabled = true; deletedata.Enabled = true; } else if (intselect > 1) { updatadata.Enabled = false; deletedata.Enabled = true; } } } //資料處理的基類 public abstract class BaseServerClass { public abstract void Init(ref GridControl gridcontrol, ref GridView gridView); public abstract void Delete(ref GridControl gridcontrol,ref GridView gridView); public abstract void Update(ref GridView gridView); public abstract void Add(); } //特定視窗處理 class DepartmentManagement:BaseUIForm { public DepartmentManagement() { this.simpleButton1.Text = "新增科室"; m_BaseServer = new DepartmentManagementServer(); Init(); } }
一下是業務處理的相關程式碼,包括GridView展示資料和右擊選單的事件,http獲取model解析展示
public class DepartmentManagementServer : BaseServerClass { public override void Delete(ref GridControl gridcontrol, ref GridView gridView) { if (gridView == null || gridView.SelectedRowsCount == 0) return; //DataRow[] rows = new DataRow[gridView.SelectedRowsCount]; gridView.BeginSort(); for (int i = 0; i < gridView.SelectedRowsCount; i++) { var row = gridView.GetDataRow(gridView.GetSelectedRows()[i]); List<KeyValuePair<string, string>> paramArray = new List<KeyValuePair<string, string>>(); paramArray.Add(new KeyValuePair<string, string>("id", row["id"].ToString())); Common.Common.getPostMsgInfo("deleteOffice", paramArray); row.Delete(); } gridView.EndSort(); } public override void Add() { AddDepartment frm = new AddDepartment(); frm.ShowDialog(); } public override void Init(ref GridControl gridcontrol, ref GridView gridView) { DataTable ds = new DataTable(); ds.Columns.Add("ID"); ds.Columns.Add("科室名稱"); ds.Columns.Add("描述"); //ds.Columns.Add("操作"); List<KeyValuePair<string, string>> paramArray = new List<KeyValuePair<string, string>>(); var stringvalue = Common.Common.getGetMsgInfo("getAllOfficeInfo", paramArray); var obj = Common.Common.JsonToObject(stringvalue); if (1 == obj.GetValue("status").ToObject<short>()) { var SurveyArray = JsonConvert.DeserializeObject<List<Office>>(obj.GetValue("list").ToString()); foreach (Office mdbdata in SurveyArray) { DataRow dr = ds.NewRow(); dr[0] = mdbdata.id; dr[1] = mdbdata.officeName; dr[2] = mdbdata.officeDesc; ds.Rows.Add(dr); } } gridcontrol.DataSource = ds; gridView.OptionsBehavior.Editable = false; gridView.OptionsSelection.MultiSelect = true; } public override void Update(ref GridView gridView) { if (gridView == null || gridView.SelectedRowsCount == 0) return; if(gridView.SelectedRowsCount > 0) { var row = gridView.GetDataRow(gridView.GetSelectedRows()[0]); UpdataDepartment frm = new UpdataDepartment(row["id"].ToString()); frm.ShowDialog(); } } }
主要是為了貼出基類和GridView增加刪除初始化的處理方式,和json解析處理方式相關的程式碼,希望對大家有用