如何在n层绑定listview和组合框视图?

时间:2010-07-20 00:16:48

标签: c# n-tier-architecture

我在我的表示层中执行了此代码,但我不知道如何在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

2 个答案:

答案 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