最近做前后台分离的项目,需要用表格展示数据,通过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解析处理方式相关的代码,希望对大家有用