Laden...

Beim Hinzufügen von Diagrammen zu Series werden die Series überschrieben

Erstellt von max85 vor 5 Jahren Letzter Beitrag vor 5 Jahren 2.092 Views
M
max85 Themenstarter:in
35 Beiträge seit 2018
vor 5 Jahren
Beim Hinzufügen von Diagrammen zu Series werden die Series überschrieben

Hallo, ich füge zu verschiedene diagramme series hinzu.Series werden aber überschrieben, wie kann ich datasource ohne zu überschreiben aktualisieren(etw. hinzufügen)??

 private void btnAddNewSeries_Click(object sender, EventArgs e)
        {
            /* list = JsonConvert.DeserializeObject<Dictionary<string, Example>>(jsonData);
             foreach (var value in list)
              {
                  line_series = value.Value.LineChart.series;
              */
            Series s1;
                int d;
                if (line_series.Count < 10 )
                {
                    s1 = new Series { Data = txtSeriesDP_line.Text, Color = txtSeriesColor_line.Text };
                    if (txtSeriesDP_line == null || string.IsNullOrWhiteSpace(txtSeriesDP_line.Text) ||
                         txtSeriesColor_line == null || string.IsNullOrWhiteSpace(txtSeriesColor_line.Text) ||
                          !int.TryParse(txtSeriesDP_line.Text, out d) || !int.TryParse(txtSeriesColor_line.Text, out d))
                    {
                        MessageBox.Show("Bitte Series richtig füllen!");
                    }
                    else
                    {
                        line_series.Add(s1);
                    }
                    listBoxSeries_line.DataSource = null;
                    listBoxSeries_line.DataSource = line_series;
                    linechart.series = line_series;
                    txtSeriesColor_line.Clear();
                    txtSeriesDP_line.Clear();
                }
            
        }

Danke im Voraus!

463 Beiträge seit 2009
vor 5 Jahren

Naja, du änderst ständig die DataSource - ich würde hier eine DataTable als DataSource hinzufügen und die Daten in die Datatable hinzufügen.

C# DataTable

M
max85 Themenstarter:in
35 Beiträge seit 2018
vor 5 Jahren

Vielen Dank für deine Antwort,

hast du oder jemand ein Beispiel dafür ich könnte nicht umsetzen,oder gibt es eine andere Möglichkeit datasource etwas hinzufügen ohne zu überschreiben

Danke im Voraus

M
max85 Themenstarter:in
35 Beiträge seit 2018
vor 5 Jahren

Hallo,ich habe versucht mit datatable zu machen aber im code ist mein dt leer!
Könnte jemand mir sagen warum??

 private void btnAddNewSeries_Click(object sender, EventArgs e)
        {
            DataTable datatable = new DataTable();
            /* list = JsonConvert.DeserializeObject<Dictionary<string, Example>>(jsonData);
             foreach (var value in list)
              {
                  line_series = value.Value.LineChart.series;
              */
            Series s1;
                int d;
                if (line_series.Count < 10 )
                {
                    s1 = new Series { Data = txtSeriesDP_line.Text, Color = txtSeriesColor_line.Text };
                    if (txtSeriesDP_line == null || string.IsNullOrWhiteSpace(txtSeriesDP_line.Text) ||
                         txtSeriesColor_line == null || string.IsNullOrWhiteSpace(txtSeriesColor_line.Text) ||
                          !int.TryParse(txtSeriesDP_line.Text, out d) || !int.TryParse(txtSeriesColor_line.Text, out d))
                    {
                        MessageBox.Show("Bitte Series richtig füllen!");
                    }
                    else
                    {
                        line_series.Add(s1);
                    }
                DataTable dt = new DataTable();
                DataColumn column = new DataColumn();
                column.DataType = System.Type.GetType("System.Int32");
                column.ColumnName = "Data";
                dt.Columns.Add(column);

                DataColumn column1 = new DataColumn();
                column1.DataType = System.Type.GetType("System.Int32");
                column1.ColumnName = "Color";
                dt.Columns.Add(column1);

                //dt.Columns.Add(column);
                //dt.Columns.Add("Color");
                foreach (var item in line_series)
                {
                    DataRow row = dt.NewRow();
                    row["Data"] = item.Data.ToString(); //item.Data;
                    row["Color"] =item.Color.ToString();
                    dt.Rows.Add(row);
                }
                listBoxSeries_line.DataSource = dt;
//....

Vielen Dank im Voraus

Hinweis von Abt vor 5 Jahren

Bitte die richtigen Code Tags verwenden. Danke.

16.806 Beiträge seit 2008
vor 5 Jahren

Was sagt der Debugger? Sind die Werte an den jeweiligen Stellen so, wie Du sie erwartest?
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Wir können leider auch nicht hellsehen; sehen aber, dass hier durchaus noch Grundlagen fehlen 😉

  • Du erstellt die Variable "datatable", nutzt sie aber nirgends
  • Du validierst die Eingaben, gibst eine Fehlermeldung aus, wenn es nicht richtig gefüllt ist - der Code läuft aber trotzdem durch, da entweder die Scopes falsch gesetzt sind oder der return fehlt.
  • Was line_series sein soll, das sehen wir gar nicht

Ansonsten den Hinweis von Stefan.Haegele beachten: in jedem Click die Source zu setzen macht nicht unbedingt sinn.
Du hast quasi am Code funktional nichts geändert.

M
max85 Themenstarter:in
35 Beiträge seit 2018
vor 5 Jahren

Hallo Abt,
danke für deine Antwort.Ja alle werten sind richtig aber nur dt hat den wert {}.

List<Series> line_series = new List<Series>();
463 Beiträge seit 2009
vor 5 Jahren

Hast du mit dem Debugger geprüft ob die Werte hinzugefügt werden bzw. ob dort eine Exception geworfen wird?

Du erzeugst 2 Spalten mit Datentyp Int32 und füllst diese Spalten mit einem Wert des Datentypes string.

  
 DataTable dt = new DataTable();  
                DataColumn column = new DataColumn();  
                column.DataType = System.Type.GetType("System.Int32");  
                column.ColumnName = "Data";  
                dt.Columns.Add(column);  
  
                DataColumn column1 = new DataColumn();  
                column1.DataType = System.Type.GetType("System.Int32");  
                column1.ColumnName = "Color";  
                dt.Columns.Add(column1);  
  
                //dt.Columns.Add(column);  
                //dt.Columns.Add("Color");  
                foreach (var item in line_series)  
                {  
                    DataRow row = dt.NewRow();  
                    row["Data"] = item.Data.ToString(); //item.Data;  
                    row["Color"] =item.Color.ToString();  
                    dt.Rows.Add(row);  
                }  
  
M
max85 Themenstarter:in
35 Beiträge seit 2018
vor 5 Jahren

Hallo Stefan,
danke für deine Antwort,ja ich habe mit debugger geprüft

M
max85 Themenstarter:in
35 Beiträge seit 2018
vor 5 Jahren

dt sieht so aus

1.696 Beiträge seit 2006
vor 5 Jahren

prüft doch mal dt.Rows.Count, du hast in ein Screenshot gemacht, aber wichtige Eigenschaft wie Rows nicht zu sehen. Was ist listBoxSeries_line für eine Control?

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

M
max85 Themenstarter:in
35 Beiträge seit 2018
vor 5 Jahren

listboxseries_line ist ListBox

1.696 Beiträge seit 2006
vor 5 Jahren

mach mal


listBoxSeries_line.DisplayMember = "Data"; // or  = "Color"
// Da gibst noch .ValueMember, was diese Eigenschaft macht, darfst du selbst heraus finden ;-)

Edit: .Count = 1, d.h. dt ist nicht leer, somit solltest du nach der Zuweisung von .DisplayMember was sehen.

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::