2016-10-04 4 views
3

enter image description hereWie ein asp.net Diagramm X-Achse Label und zeigt nur Datum, bearbeiten und keine Zeit

Wie kann ich die Zeit von der X-Achse in meinem Diagramm entfernen. Meine sql gibt nur Datum zurück, aber mein Code fügt die Zeit erneut hinzu.

Ich habe versucht:

Chart1.ChartAreas[0].AxisX.LabelStyle.Format = "##-##-##";

Aber kein Glück.

Mein aktueller Code:

  Chart1.Visible = ddlChart.SelectedValue != ""; 
      string query = string.Format(stest); 
      DataTable dt = GetData(query); 
      string[] x = new string[dt.Rows.Count]; 
      int[] y = new int[dt.Rows.Count]; 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       x[i] = dt.Rows[i][0].ToString(); 
       y[i] = Convert.ToInt32(dt.Rows[i][1]); 
      } 
      Chart1.Series[0].Points.DataBindXY(x, y); 

      Chart1.Series[0].ChartType = SeriesChartType.Bar; 
      Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true; 
      Chart1.Legends[0].Enabled = true; 

ARBEITS CODE - Dank jstreet

Chart1.Visible = ddlChart.SelectedValue != ""; 
      string query = string.Format(stest); 
      DataTable dt = GetData(query); 

      DateTime[] x = new DateTime [dt.Rows.Count]; 
      int[] y = new int[dt.Rows.Count]; 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       x[i] = Convert.ToDateTime(dt.Rows[i][0]); 
       y[i] = Convert.ToInt32(dt.Rows[i][1]); 
      } 
      Chart1.Series[0].Points.DataBindXY(x, y); 

      Chart1.ChartAreas[0].AxisX.LabelStyle.Format = "MM-dd-yyyy"; 

      Chart1.Series[0].ChartType = SeriesChartType.Bar; 

      Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true; 

      Chart1.Legends[0].Enabled = true; 
+0

@jstreet Wenn sich die Ausrichtung ändert, ändert sich die Achse? Wie Sie in diesem horizontalen Balkendiagramm sagen, wird die X-Achse zur Veritcal und die Y-Achse zur Horizontalen? – MattB

+0

@MattB welche Orientierung? – jsanalytics

Antwort

3

In einem Bar Diagramm (im Gegensatz zu einem Column chart), die ve rtical Achse ist die AxisX, nicht AxisY. Vermeiden Sie auch, AxisX eine Zeichenfolge zuzuweisen. Es ist überhaupt nicht notwendig und kann Probleme verursachen.

verwenden:

Chart1.ChartAreas[0].AxisX.LabelStyle.Format = "MM-dd-yyyy"; 

oder dies:

Chart1.ChartAreas[0].AxisX.LabelStyle.Format = "MM-dd-yy"; 

enter image description here

EDIT:

Hier einige Beispielcode:

protected void Page_Load(object sender, EventArgs e) 
    { 
     DateTime[] x = new DateTime[3]; 
     int[] y = new int[3]; 

     for (int i = 0; i < 3; i++) 
     { 
      x[i] = DateTime.Now.AddDays(i); 
      y[i] = 10 * (i + 1); 
     } 
     Chart1.Series[0].Points.DataBindXY(x, y); 
     Chart1.ChartAreas[0].AxisX.LabelStyle.Format = "MM-dd-yy"; 
    } 
+0

Versuchte das oben genannte nur nach meiner 'for' Schleife, aber kein Glück. – Ruan

+0

Deshalb sollten Sie Ihre 'DateTime' nicht in' string' konvertieren ... – jsanalytics

+0

Welchen Datentyp speichert Ihre Tabelle? – jsanalytics

0

Die unten folgenden sollte funktionieren

for (int i=0; i < dt.Rows.Count; i++) 
{ 
    DataRow row = dt.Rows[i]; 
    x[i] = DateTime.ParseExact(row[0].ToString(), 'MM-dd-yy', CultureInfo.InvariantCulture); 
    y[i] = Convert.ToInt32(row[1]); 
} 
+0

Wo sollte ich den obigen Code hinzufügen, nicht in der for-Schleife, weil es keine Definition für 'ToShortDateString' gibt? Und außerhalb der 'for' Schleife gibt es keinen Kontext von' i' – Ruan

+0

@Ruan Ich würde sie innerhalb der for-Schleife ändern, da das ist, wo Sie den ursprünglichen ToString() Aufruf tun. Meine Annahme ist, dass der 'dt.Rows [i] [0]' ist Ihr DateTime-Wert, richtig? – MattB

+0

'x [i] = dt.Rows [i] [0] .ToShortDateString (" MM-dd-yy ");' gibt mir einen Fehler von ''object' enthält keine Definition für 'ToShortDateString' und keine Erweiterung Methode 'ToShortDateString' akzeptiert ein erstes Argument vom Typ 'Objekt' könnte gefunden werden (fehlt Ihnen eine Using-Direktive oder eine Assembly-Referenz?) ' – Ruan

Verwandte Themen