C# 如何在MVP中使用模型填充数据网格视图
在win forms应用程序中,UI中有一个网格视图,其中应填充客户端分支机构的详细信息。大约有50个分支机构。因此C# 如何在MVP中使用模型填充数据网格视图,c#,.net,oop,binding,mvp,C#,.net,Oop,Binding,Mvp,在win forms应用程序中,UI中有一个网格视图,其中应填充客户端分支机构的详细信息。大约有50个分支机构。因此DataService类中的GetBranchDetails()方法返回一个DataSet,而Presenter类将该DataSet传递到UI的BindData()方法,其中网格视图的datasource属性设置为DataSet对象,如代码所示 问题是DataService没有返回模型,而是返回DataSet。有人能告诉我如何使用分支机构模型而不是使用数据集吗?因此,模型应该从数据
DataService
类中的GetBranchDetails()
方法返回一个DataSet
,而Presenter
类将该DataSet
传递到UI的BindData()
方法,其中网格视图的datasource
属性设置为DataSet
对象,如代码所示
问题是DataService
没有返回模型,而是返回DataSet
。有人能告诉我如何使用分支机构
模型而不是使用数据集
吗?因此,模型
应该从数据服务
返回,然后演示者
将该模型
传递到UI,其中模型
将设置为网格视图的数据源
。请注意,始终会有多个分支机构
数据服务类
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);
}
演示者课程
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);
}
string GetJson(数据表)
{
System.Web.Script.Serialization.JavaScriptSerializer serializer=新的System.Web.Script.Serialization.JavaScriptSerializer();
列表行=新列表();
字典行=空;
foreach(table.Rows中的DataRow DataRow)
{
行=新字典();
foreach(table.Columns中的DataColumn列)
{
row.Add(column.ColumnName.Trim(),dataRow[column]);
}
行。添加(行);
}
返回序列化程序。序列化(行);
}
Json对您有用吗?我还没有尝试过Json,因为我对它一点都不熟悉。但事实上,既然这是一个C#Win表单应用程序,它是一个比返回ado.net数据集更好的解决方案吗?