我在我的表示层中执行了此代码,但我不知道如何在3层上执行此操作。 。 请帮助,我堆叠这个问题。 Form1_Load的() { cboStatus(); GetlistView(); }
public void cboStatus()
{
try
{
SqlConnection conn = new SqlConnection(connStr);
SqlCommand sqlcom = new SqlCommand("sp_loadStatus",conn);
sqlcom.CommandType = CommandType.StoredProcedure;
SqlDataReader dr = null;
conn.Open();
dr = sqlcom.ExecuteReader();
cmbStatus.Items.Clear();
while (dr.Read())
{
cmbStatus.Items.Add((dr["StatusDescription"]));
}
if (conn.State == ConnectionState.Open) conn.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error Occurred:" + ex);
}
finally
{
}
}
#endregion
#region "fill listview"
public void GetlistView()
{
int i = 0;
SqlConnection sqlcon = new SqlConnection(connStr);
lstBF.Items.Clear();
SqlCommand sqlcom = new SqlCommand("sp_LoadNew", sqlcon);
sqlcom.CommandType = CommandType.StoredProcedure;
SqlDataReader dr;
lstBF.Items.Clear();
sqlcon.Open();
dr = sqlcom.ExecuteReader();
while (dr.Read())
{
lstBF.Items.Add(dr["SerialNumber"].ToString());
lstBF.Items[i].SubItems.Add(dr["PartNumber"].ToString());
lstBF.Items[i].SubItems.Add(dr["StatusDescription"].ToString());
lstBF.Items[i].SubItems.Add(dr["CustomerName"].ToString());
lstBF.Items[i].SubItems.Add(dr["DateCreated"].ToString());
lstBF.Items[i].SubItems.Add(dr["CreatedBy"].ToString());
lstBF.Items[i].SubItems.Add(dr["ModifiedBy"].ToString());
i = i + 1;
}
if (sqlcon.State == ConnectionState.Open) sqlcon.Close();
}
#endregion
答案 0 :(得分:1)
首先,您可以将此代码放在单独的文件或项目中,并将其称为DataLayer。您将返回数据阅读器,而不是绑定到列表视图。然后,您将创建一个包含一些业务类的业务层。在这种情况下,您可以从“Part”或“Order”开始。这将包含数据表中的属性作为类的属性。然后,创建一个控制器,输出您的零件或订单列表,并将它们传递回表示层。
这种方式就是一个例子,它允许您保持演示文稿和数据的分离。
答案 1 :(得分:1)
可能有一些事情你可以做,但我认为最基本的是制作代表Status的Business对象(C#Class)以及你在ListView中显示的任何东西(可能是某种产品)。
您的数据层应具有构建状态和产品集合的数据访问代码(SqlConnection等)。
您的业务层将负责任何业务逻辑(您在这里没有太多,这很好)。
您的演示文稿层会将UI控件绑定到从数据层返回的集合(通过业务层)。
实际上,您的Business对象是业务层实体。
从那里,您可以展开以创建与您的Business对象等对应的数据访问类。
这是一篇很好的技术文章,可以帮助您入门: http://msdn.microsoft.com/en-us/library/ms973279.aspx