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!
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.
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
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
Bitte die richtigen Code Tags verwenden. Danke.
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 😉
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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>();
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); }
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?
**:::
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.
**:::