在win表单应用程序中,UI中有一个网格视图,应该填充客户端分支机构的详细信息.大约有50个分支机构.因此,DataService类中的GetBranchDetails()方法返回一个DataSet,Presenter类将该DataSet传递给UI的BindData()方法,其中网格视图的datasource属性设置为DataSet对象,如代码所示.
问题是DataService没有返回模型而是返回DataSet.有人可以告诉我如何使用BranchOffice模型而不是在这里使用DataSet吗?因此,应该从DataService返回Model,然后演示者将该Model传递给UI,其中Model将被设置为网格视图的数据源.请注意,总会有不止一个分支机构!
DataService类
public DataTable GetBranchDetails() { string selectStatement = "SELECT ID,branch_name + ',' + branch_add AS Branch,area,sm,atten_status FROM Branch WHERE Status='Active'"; using (sqlConnection sqlConnection = new sqlConnection(db.GetConnectionString)) using (sqlCommand sqlCommand = new sqlCommand(selectStatement,sqlConnection)) using (sqlDataAdapter da = new sqlDataAdapter(sqlCommand)) using (DataSet ds = new DataSet()) using (DataTable dt = new DataTable()) { ds.Tables.Add(dt); sqlConnection.open(); da.Fill(dt); return dt; } }
演讲者课程
private void _View_ShowBranches(object sender,EventArgs e) { ShowBranches(); } private void ShowBranches() { var dt = DataService.GetBranchDetails(); this._View.BindData(dt); }
查看/ UI
public partial class frmAttendancePoints : Form,IView { public frmAttendancePoints() { InitializeComponents(); } public void BindData(DataSet dt) { dgAttendancePoints.DataSource = dt; } }
解决方法
使用此方法将ADO.NET DataTable转换为可以在MVP视图中显示的JSON:
string GetJson(DataTable table) { System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); List<Dictionary<string,object>> rows = new List<Dictionary<string,object>>(); Dictionary<string,object> row = null; foreach (DaTarow daTarow in table.Rows) { row = new Dictionary<string,object>(); foreach (DataColumn column in table.Columns) { row.Add(column.ColumnName.Trim(),daTarow[column]); } rows.Add(row); } return serializer.Serialize(rows); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。