konto usunięte
Daniel Dąbrowski Właściciel, 42n
Temat: BindingSource dla List<T>
Sproboj zastosowac wzorzec Mediator
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:06Daniel 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
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 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
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
Podobne tematy
-
Programiści .NET » oferta pracy dla programisty .net -
-
Programiści .NET » SQLite dla UT [ASP.net] -
-
Programiści .NET » Zaproszenie na Startup Live Warsaw - czterodniowy... -
-
Programiści .NET » [C#] Alternatywa dla GOTO -
-
Programiści .NET » [Wrocław] Spotkanie dla programistów .NET -
-
Programiści .NET » Rozwiązanie dla SIGSEGV przy dlopen pod Mono (2-10.8) -
-
Programiści .NET » Interesujące spotkanie dla programistów .NET w Poznaniu -
-
Programiści .NET » książka omawiająca programowanie dla urządzeń dotykowych. -
-
Programiści .NET » Bezpłatny hosting dla programistów -
-
Programiści .NET » XML deserializacja dla klasy pochodnej -
Następna dyskusja: