2016-11-17 1 views
0

Ich versuche eine Kundenliste von Customers.cs in MainForm.cs zu bekommen. Gibt es eine Möglichkeit, die Liste von Customers.cs ohne Verwendung eines SQL-Servers zu bekommen? Ich möchte, dass der Vorname unter dem Spaltennamen colFirstName und der Nachname unter dem Spaltennamen colLastName auf dem MainForm.cs angezeigt wird. Ich habe einen Code, den ich für MainForm.cs verwendet habe, um die sql Kundenliste zu erhalten, aber ich bin erforderlich, um die Kundenliste zu erhalten, ohne eine sql Verbindung zu verwenden.Wie bekomme ich eine Kundenliste in eine winforms App?

Customers.cs Code

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ClassProject2.Data 
{ 
public class Customers 
{ 
    public Customers() 
    { 
     _customers = new List<Customer>() //Customer list 
     { 
      new Customer(_ids.Next()) 
      { 
       FirstName = "Bob", 
       LastName = "Miller" 
      }, 
      new Customer(_ids.Next()) 
      { 
       FirstName = "Sue", 
       LastName = "Storm" 
      }, 
      new Customer(_ids.Next()) 
      { 
       FirstName = "Peter", 
       LastName = "Parker" 
      } 
     }; 
    } 

    public Customer Add (Customer customer) 
    { 
     if (customer == null) 
      throw new ArgumentNullException(nameof(customer)); 

     Validator.ValidateObject(customer, new ValidationContext(customer)); 

     if (_customers.Any(c => String.Compare(c.FirstName, customer.FirstName, true) == 0 && 
           String.Compare(c.LastName, customer.LastName, true) == 0)) 
      throw new ArgumentException("Customer already exists.", nameof(customer)); 

     customer.Id = _ids.Next(); 

     _customers.Add(customer); 

     return customer; 
    } 

    public Customer Get (int id) 
    { 
     return (from c in _customers 
       where id == c.Id 
       select c 
       ).FirstOrDefault(); 
    } 

    public IEnumerable<Customer> GetAll() 
    { 
     return _customers; 
    } 

    public void Remove(int id) 
    { 
     //Verify > 0 
     if (id <= 0) 
      throw new ArgumentOutOfRangeException("Id must be > 0", nameof(id)); 

     //Find the item 
     var item = _customers.FirstOrDefault(i => i.Id == id); 

     //Remove it 
     if (item != null) 
      _customers.Remove(item); 
    } 

    private readonly List<Customer> _customers; 
    private readonly Sequence _ids = new Sequence(100); 
} 
} 

-Code, die ich für MainForm.cs verwendet

private void IsLinkClicked(MouseEventArgs e) 
    { 
     try 
     { 
      if (e.Button != MouseButtons.Left) return; 
      DataGridView.HitTestInfo Hti = gridCustomers.HitTest(e.X, e.Y); 
      if (Hti.Type == DataGridViewHitTestType.Cell) 
      { 
       if (gridCustomers.Rows.Count > 0) 
       { 
        gridCustomers.CurrentCell = gridCustomers[Hti.ColumnIndex, Hti.RowIndex]; 
       } 
      } 
      if(Hti.ColumnIndex < 0 || Hti.ColumnIndex > gridCustomers.ColumnCount) 
      { 
       value = false; 
      } 
      CustomerForm cf = new CustomerForm(); 
      cf.editMode = true;     
      int rowIndex = gridCustomers.CurrentCell.RowIndex; 
      cf.id = gridCustomers.Rows[rowIndex].Cells["colId"].Value.ToString(); 
      cf.FName = gridCustomers.Rows[rowIndex].Cells["colFirstName"].Value.ToString(); 
      cf.LName = gridCustomers.Rows[rowIndex].Cells["colLastName"].Value.ToString(); 
      cf.Show();     
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

Antwort

0

Ich glaube nicht, es ist möglich, die Liste zu erhalten, ohne eine Verbindung zu der Datenbank mit zu Sie versuchen, ziehe Daten aus.

Sie können es mit dataadapter tun und einen Datensatz in Unconnected Modus In Ihrem Datensatz werden Sie nur SELECT-Anweisung setzen können, wenn Sie wollen, um die Datenbank und einfach zeigen Daten für den Benutzer

+0

nicht zu ändern, das ist genau das was ich gesucht habe. –

+0

Markieren Sie es, sobald es angezeigt wurde –

Verwandte Themen