konto usunięte

Temat: BindingSource dla List<T>

`Piotr Sowa edytował(a) ten post dnia 12.02.12 o godzinie 15:05
Daniel Dąbrowski

Daniel Dąbrowski Właściciel, 42n

Temat: BindingSource dla List<T>

Sproboj zastosowac wzorzec Mediator
Przemysław Krygier

Przemysław Krygier Specjalista Systemów
Informatycznych

Temat: BindingSource dla List<T>

Witam!

Odpowiedź:


namespace Test
{
public partial class Form1 : Form
{
private readonly List<Osoba> osoby = new List<Osoba>();
private readonly BindingSource bindingSource;

public class Osoba
{
public Osoba(string imie, string nazwisko)
{
Imie = imie;
Nazwisko = nazwisko;
}
public string Imie { get; set; }
public string Nazwisko { get; set; }
}

public Form1()
{
InitializeComponent();

osoby.Add( new Osoba("Przemysław","Krygier"));
osoby.Add(new Osoba("Jan", "Kowalski"));
osoby.Add(new Osoba("Adam", "Grzegorzewski"));
osoby.Add(new Osoba("Maria", "Skłodowska"));

bindingSource = new BindingSource(osoby, null);
dataGridViewTesty.DataSource = bindingSource;

}

private void buttonDodaj_Click(object sender, EventArgs e)
{

bindingSource.Insert(osoby.Count, new Osoba( "Stefan","Żółkiewski"));

}
}
}

konto usunięte

Temat: BindingSource dla List<T>

`Piotr Sowa edytował(a) ten post dnia 12.02.12 o godzinie 15:06
Daniel Dąbrowski

Daniel Dąbrowski Właściciel, 42n

Temat: BindingSource dla List<T>

Piotr Sowa:
ciach ...
Takie, które od razu można podczepiać, jako źródło danych dla grida. Natomiast sama implementacja klasy Pages jest pusta, wystarczy ją zdefiniować. Całą logikę wiersza zamieściłem w klasie Row, która dziedziczy klasa Page. Klasę Page wystarczy zmapować odpowiednim Page.hbm.xml.
No i tak rozwiązałem kłopoty z BindingSource :).
Rozwiązanie przedstawione nie pokazuje jak przechwycić Add i Remove z List<Osoba>.

Ja u siebie mam tak Grid z DevExpress,
dane to jakis agregate root powiedzmy Parent ktory ma property Children ktore jest IList<Child>. Dane sa obslugiwane przez NHibernate.

Binduje w ten desen.

MyGridControl.DataSource = parentInstance.Children;

Powiedzmy ze Child ma cos takiego jak Imie i Nazwisko i takie widze kolumny w gridzie. Czyli jak w gridzie zmieni komus Imie na jakis inne a potem dam

session.SaveOrUpdate(parentInstance) to automatycznie zapisuje zmiany tylko w tym dziecku ktore sie zmienilo.

Byc moze grid DevExpressa ma w sobie wenetrznego Mediatora do bindowania Properties w jedna i w druga strone.

Ty byc moze masz problem z dodawaniem i usuwaniem nowch itemow do kolekcji ... niebawem bede torobil to Ci moge powiedziec jak sie zachowuje Grid z DevExpressa. Ale zakladam ze podobnie.

Ja wogole nie stosuje zadnych BindingSource (byc moze grid devexpressa stosuje wewnetrznie, nie wnikam, nie jestem specjalistą od gridów winformsowych)

Zakladam ze chodzi Ci o dodawanie nowych rekordów do grida
Przemysław Krygier

Przemysław Krygier Specjalista Systemów
Informatycznych

Temat: BindingSource dla List<T>

Cóż ... w zagadnieniu nie było ani słowa o NHibernate.

Zmiany w kolekcji są przenoszone na datagridView... w drugą stronę podobnie. (W kolumnie datagrida wystarczy ustawić właściwość DataPropertyName na nazwę właściwości naszej klasy i modyfikacje grida zmieniają kolekcję).

Pozdrawiam
Daniel Dąbrowski

Daniel Dąbrowski Właściciel, 42n

Temat: BindingSource dla List<T>

Przemysław Krygier:
Cóż ... w zagadnieniu nie było ani słowa o NHibernate.

Zmiany w kolekcji są przenoszone na datagridView... w drugą stronę podobnie. (W kolumnie datagrida wystarczy ustawić właściwość DataPropertyName na nazwę właściwości naszej klasy i modyfikacje grida zmieniają kolekcję).

Pozdrawiam


Ale Twoj kod tez pojdzie z uzyciem NHibernate

poprostu na koncu bedzie

foreach osoby
session.saveorupdate(osoba)

konto usunięte

Temat: BindingSource dla List<T>

`Piotr Sowa edytował(a) ten post dnia 12.02.12 o godzinie 15:07
Przemysław Krygier

Przemysław Krygier Specjalista Systemów
Informatycznych

Temat: BindingSource dla List<T>

Myślę że tak, choć również nie sprawdzałem. DevExpress'owy grid potrafi optymalizować zapytania wg liczby wyświetlanych rekordów ... zatem zwalnianie zasobów powinno być ... naturalne.

OK ... podejście, aby nie przesłaniać zagadnienia tysiącem szczegółów jest jak najbardziej słuszne.

Pozdrawiam
Przemek

Następna dyskusja:

oferta pracy dla programist...




Wyślij zaproszenie do