2010-07-20 6 views
0

J'ai fait ce code dans ma couche de présentation mais je ne sais pas comment le faire sur 3 niveaux. . S'il vous plaît aider, je suis pile avec ce problème. form1_Load() { cboStatus(); GetlistView(); }Comment lier la vue liste et la liste déroulante dans n-tier?

région

"combo FILL"

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 

Répondre

1

Il y a probablement une poignée de choses que vous pouvez faire, mais je pense que le plus basique serait de faire des objets Business (classe C#) qui représentent le statut et tout ce que vous affichez dans votre ListView (probablement un produit quelconque) .

Votre niveau de données doit avoir le code d'accès aux données (SqlConnection et autres) qui crée des collections de statuts et de produits.

Votre Business Tier se chargera de toute logique métier (que vous n'avez pas beaucoup ici, ce qui est bien). Votre niveau de présentation liera les contrôles de l'interface utilisateur aux collections renvoyées à partir du niveau de données (via le niveau métier). Vraiment, vos objets Business sont des entités Business Tier. À partir de là, vous pouvez développer pour créer des classes d'accès aux données qui correspondent à vos objets métier et autres.

est ici un article de bonne technologie pour vous aider à démarrer: http://msdn.microsoft.com/en-us/library/ms973279.aspx

1

Pour commencer, vous mettriez ce code dans un fichier séparé ou d'un projet et appeler le dataLayer. Au lieu de vous lier à votre listview, vous retourneriez un lecteur de données. Ensuite, vous créez une couche de gestion qui contient des classes métier. Dans ce cas, vous pouvez commencer par "Part" ou "Order". Cela contiendrait les propriétés de votre table de données en tant que propriétés de la classe. Ensuite, créez un contrôleur qui affichera une liste de vos pièces ou commandes et les transmettra à la couche de présentation.

Cette manière est un exemple et vous permet de maintenir la séparation de votre présentation et de vos données.

+0

Je ca Rabattre ma boîte Combo à l'aide de niveau .... :) Dernier problème est Listview/Listbox. – Crimsonland

Questions connexes