Autor Beitrag
Dabra
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 30.01.14 20:56 
Hallo User der Entwickler-Ecke,

ich komme mit dem Thema Databinding nicht ganz klar.
Kurz Vorweg:
Wenn ich es richtig verstanden habe dann geht es bei Databinding darum bestimmte ohne großen Aufwand in beispielsweise Datagridview einzutragen.
Ist die Idee schonmal richtig?

Zu meinem Programm:
1. Habe AutogenerateColumns in der Gridview deaktiviert weil ich die Spalten gerne selber anpassen möchte.
2. Es gibt eine Klasse "Person"
3. Klasse Person enthält die Attribute "Name", "Alter", Größe
3. Es gibt eine BindingList<Person> in die alle Personen eingetragen sind
4. Bindinsource der Gridview ist die Bindinglist

Zu den Fragen:
Ist der Ansatz von der Idee her richtig oder wird das normal anders verwendet?
Ich möchte nun 2 Spalten erstellen. Name und Alter
Wie kann ich es nun einstellen das die Werte der passenden Spalte zugeordnet werden?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
    class Person
    {

        //Attribute
        public string m_Name { get; set; }
        public int m_Alter { get; set; }
        public int m_Groeße;

        //Konstruktor
        public Person(string name, int alter)
        {
            m_Name = name;
            m_Alter = alter;
        }
}

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        // Attribute
        BindingSource bs = new BindingSource();
        BindingList<Person> _list = new BindingList<Person>();

        private void Form1_Load(object sender, EventArgs e)
        {
            bs.DataSource = _list;
            dgv1.AutoGenerateColumns = false;
            dgv1.DataSource = bs;          
            dgv1.ReadOnly = true;          
           
        }

        private void bHinz_Click(object sender, EventArgs e)
        {
            string Name = tbName.Text;
            int Alter = Int32.Parse(tbAlter.Text);
            Person objPerson = new Person(Name, Alter);
            _list.Add(objPerson);               
        }
    }
}


vielen vielen Dank schonmal für die Hilfe.

mfg Dabra

Moderiert von user profile iconTh69: Titel geändert (DataGridView anstatt GridView).
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4807
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 30.01.14 21:16 

Für diesen Beitrag haben gedankt: Dabra
Dabra Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 30.01.14 21:34 
Hey vielen vielen Dank hat funktioniert.
Da wäre ich nie dahinter gekommen.

Vielen Vielen Dank

Hier noch der Code
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        // Attribute
        BindingSource bs = new BindingSource();
        BindingList<Person> _list = new BindingList<Person>();

        private void Form1_Load(object sender, EventArgs e)
        {
            dgv1.ColumnCount = 2;
            bs.DataSource = _list;
            dgv1.AutoGenerateColumns = false;
            dgv1.DataSource = bs;          
            dgv1.ReadOnly = true;
          
            dgv1.Columns[0].Name = "Name";
            dgv1.Columns[0].DataPropertyName = "m_Name";
            dgv1.Columns[1].Name = "Alter";
            dgv1.Columns[1].DataPropertyName = "m_Alter";
      
        }

        private void bHinz_Click(object sender, EventArgs e)
        {
            string Name = tbName.Text;
            int Alter = Int32.Parse(tbAlter.Text);
            Person objPerson = new Person(Name, Alter);
            _list.Add(objPerson);
            tbAlter.Clear();
            tbName.Clear();
        }
    }
}
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4807
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 31.01.14 10:38 
Hallo Dabra,

noch als Hinweis: (public) Property-Namen sollten (wie Methodennamen) mit einem Großbuchstaben beginnen, d.h.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
class Person
{
        // Eigenschaften (properties)
        public string Name { get; set; }
        public int Alter { get; set; }
        public int Groeße { get; set; }
}

Und Attribute sind in C# (bzw. .NET) etwas anderes, nämlich Annotationen in eckigen Klammern (welche per Reflection auslesbar sind).