Autor Beitrag
hui1991
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Do 29.01.09 08:57 
Hallo,

ich hab ein Problem mit dem Databinding, ich hab ein DataTable mit 3 Zeilen und 4 Spalten an 3 Textfelder und 1 DateTimePicker gebunden. Jetzt wird mir immer nur die erste Zeile des DataTable angezeigt.
Ich hab dann gegoogelt so wie immer. ^^ Und hab auch eine Möglichkeit gefunden.
Das Problem ist sie funktioniert nicht :(
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:
38:
39:
40:
Datenbank m_datenbank;
        DataTableCreater m_werte;
        DataTable m_wert;

        public Form1()
        {
            InitializeComponent();

            m_datenbank = new Datenbank(@"D:\work\win\src_dotnet\Projekte\TestProgrammDatenbankklasse\TestProgrammDatenbankklasse\db\test.mdb");
        }        

        private void Form1_Load(object sender, EventArgs e)
        {
            m_werte = m_datenbank.TestTabelle.ReadAll();
            m_wert = m_werte.CreateDataTable;

            textBox1.DataBindings.Add("Text", m_wert, "ID");
            textBox2.DataBindings.Add("Text", m_wert, "Vorname");
            textBox3.DataBindings.Add("Text", m_wert, "Nachname");
            dateTimePicker1.DataBindings.Add("Value", m_wert, "GebDatum");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //textBox1.DataBindings["Text"].BindingManagerBase.Position ist hier 0
            textBox1.DataBindings["Text"].BindingManagerBase.Position += 1;
            //textBox1.DataBindings["Text"].BindingManagerBase.Position ist hier immernoch 0
            //Warum?
            textBox2.DataBindings["Text"].BindingManagerBase.Position += 1;
            textBox3.DataBindings["Text"].BindingManagerBase.Position += 1;
            dateTimePicker1.DataBindings["Text"].BindingManagerBase.Position += 1;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.DataBindings["Text"].BindingManagerBase.Position -= 1;
            textBox2.DataBindings["Text"].BindingManagerBase.Position -= 1;
            textBox3.DataBindings["Text"].BindingManagerBase.Position -= 1;
            dateTimePicker1.DataBindings["Text"].BindingManagerBase.Position -= 1;
        }


Jetzt ist das Problem, dass Position sich nicht ändern will. Was mache ich falsch? Das hatte ich schonmal mit einer eigenen Klasse das die sich nicht erhöhen wollte. Weil Position = 0, Count = 3. Irgendwie will er aber nicht auf Position = 1 oder 2. :(
hui1991 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Do 29.01.09 09:33 
Eine Lösung habe ich auf
stackoverflow.com/qu...type-to-textbox-text
gefunden.

Dort steht unten:
ausblenden C#-Quelltext
1:
2:
textBox.DataBindings.Add("Text"this"MyVectorProperty"); //FAILS
textBox.DataBindings.Add("Text"this"MyVectorProperty"true); //WORKS!


Und tatsächlich hat es funktioniert. :)

Außerdem brauch ich irgendwie nur einmal:
ausblenden C#-Quelltext
1:
textBox1.DataBindings["Text"].BindingManagerBase.Position -= 1;					


also so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
private void button1_Click(object sender, EventArgs e)
        {
            //textBox1.DataBindings["Text"].BindingManagerBase.Position ist hier 0
            textBox1.DataBindings["Text"].BindingManagerBase.Position += 1;
            //Alle Felder auch textBox2,3 und dateTimePicker haben sich um eins erhöht :)
        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.DataBindings["Text"].BindingManagerBase.Position -= 1;
        }


Ist denke ich ein Bug in der Klasse, weil nur das man Formatierung anschaltet, dass es dann geht.
Naja jetzt Klicke ich auf den Button und die Felder ändern sich so wie sie sollen. :)