Как связать просмотр списка и поля со списком на n-уровне? - PullRequest
0 голосов
/ 20 июля 2010

Я сделал этот код на своем уровне презентации, но я не знаю, как сделать это на 3-х уровнях , Пожалуйста, помогите, я стека с этой проблемой. Form1_Load () { cboStatus (); GetlistView (); }

регион "FILL combo"

    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 ]

1 голос
/ 20 июля 2010

Вероятно, есть несколько вещей, которые вы можете сделать, но я думаю, что самое основное было бы сделать бизнес-объекты (класс C #), которые представляют Status, и все, что вы отображаете в вашем ListView (возможно, какой-то продукт).

Ваш уровень данных должен иметь код доступа к данным (SqlConnection и т. Д.), Который создает наборы статусов и продуктов.

Ваш бизнес-уровень позаботится о любой бизнес-логике (которой у вас мало, что хорошо).

Ваш уровень презентации будет привязывать элементы управления пользовательского интерфейса к коллекциям, возвращаемым изуровень данных (через бизнес-уровень).

Действительно, ваши бизнес-объекты являются объектами бизнес-уровня.

Оттуда вы можете расширяться, чтобы сделать классы доступа к данным, соответствующие вашим бизнес-объектам, итакие.

Вот хорошая техническая статья, с которой можно начать: http://msdn.microsoft.com/en-us/library/ms973279.aspx

1 голос
/ 20 июля 2010

Для начала вы должны поместить этот код в отдельный файл или проект и назвать его DataLayer.Вместо привязки к вашему списку, вы бы вернули средство чтения данных.Затем вы должны создать бизнес-уровень с несколькими бизнес-классами.В этом случае вы можете начать с «Part» или «Order».Это будет содержать свойства из вашей таблицы данных в качестве свойств класса.Затем создайте контроллер, который будет выводить список ваших деталей или заказов и передавать их обратно на уровень представления.

Этот способ является одним из примеров и позволяет вам поддерживать разделение презентации и данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...