Autor Beitrag
dinazavric
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Fr 06.05.11 09:21 
Moin, moin!

Und wieder mal eine Frage an Euch :-) Ich habe eine Relation für die ComboBoxes erstellt und möchte nun die Werte, die vorher schon mal gespeichert wurden, übernehmen, so, dass sie beim Auswahl von einem bestimmten Protocol in den Boxen angezeigt werden. Bin für jeden Tipp oder Hinweis sehr dankbar!

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dataSetPro.Relations.Add("ParameterProperties", dataSetPro.Tables["Parameters"].Columns["ParameterName"], dataSetPro.Tables["ParameterValues"].Columns["ParameterName"]);

BindingSource bs1 = new BindingSource();
bs1.DataSource = this.dataSetPro;
P1_Name.DisplayMember = "Parameters.ParameterName";
P1_Name.ValueMember = "Parameters.ParameterName";
P1_Name.DataSource = bs1;
P1_Value.DisplayMember = "Parameters.ParameterProperties.ValueDefinition";
P1_Value.ValueMember = "Parameters.ParameterProperties.ParameterName";
P1_Value.DataSource = bs1;

if (dataSetPro.Tables["Protocols"].Rows.Contains(P_Name_List.Text)) // hier möchte ich überprüfen, ob das Protocol voher schon mal gespeichert wurde
{
   P1_Name.SelectedItem = ...; // hier verstehe ich nicht, was ich genau nehmen soll, habe einiges ausprobiert, was leider nicht ging...
   P1_Value.SelectedItem = ...;
}
else
{
   P1_Name.SelectedItem = null;
   P1_Value.SelectedItem = null;
}
dinazavric Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Mo 09.05.11 16:47 
Leider habe ich bis jetzt keine Antwort bekommen und habe versucht es selber zu lösen. Die ComboBoxen habe ich erstmal mit TextBoxen ersetzt. Die TextBoxes habe ich in ein Array zusammengefasst um so meinen Code zu verkürzen. Hier ist mein Code:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
                int i = 0;
                
                foreach (DataRow dataRow in dataSetPro.Tables["Parameter"].Rows)
                {
                    if (dataRow["ProtocolID"].ToString() == IdT.Text)
                    {
                        NameControlsT[i].Text = dataRow["ParameterName"].ToString();
                        ValueControlsT[i].Text = dataRow["ValueDefinition"].ToString();
                        i++;
                    }
                    else
                    {
                        NameControlsT[i].Text = "";
                        ValueControlsT[i].Text = "";
                        i++;
                    }
                }


Mit dem Code werden leider nur die Daten für IdT.Text = "1" angezeigt, sprich, wenn man was anders als "1" hat wird die Bedienung "dataRow["ProtocolID"].ToString() == IdT.Text" nicht erfüllt. Ich habe aber in der DataTable auch andere IDs. Ich konnte den Fehler nicht finden. Kann mir da jemand helfen? Danke
dinazavric Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Di 10.05.11 16:02 
Da ich leider wieder keine Antwort bekommen habe, muss ich wohl selber nach der Lösung suchen ;-) Hier ist sie auch schon :-)

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:
                    int i = 0;

                    foreach (DataRow dataRow in dataSetPro.Tables["Parameter"].Rows)
                    {
                        if (dataRow["ProtocolID"].ToString() == IdT.Text)
                        {
                            if (i < 10)
                            {
                                NameControlsT[i].Text = dataRow["ParameterName"].ToString();
                                ValueControlsT[i].Text = dataRow["ValueDefinition"].ToString();
                                i++;
                            }
                            else break;
                        }
                        else
                        {
                            if (i < 10)
                            {
                                NameControlsT[i].Text = "";
                                ValueControlsT[i].Text = "";
                            }
                            else break;
                        }                        
                    }