2017-02-25 9 views
1

のグラフ(MSChart)toNameではX軸の値を変更することができますどのように私は数ヶ月の名前を表示するには、チャートのX軸の値を変更したいヶ

例:1 => 1月、2 => 2月、など

 DataTable dt = new DataTable(); 
     SqlCommand s = new SqlCommand("ReportMonthly", SCon); 
     s.CommandType = CommandType.StoredProcedure; 
     s.Parameters.AddWithValue("@Year", Year); 
     SCon.Open(); 
     SqlDataReader dr = s.ExecuteReader(); 
     dt.Load(dr); 
     chtWRMonthly.DataSource = dt; 
     chtWRMonthly.Series["Sold"].XValueMember = "Month"; 
     chtWRMonthly.Series["sRemaining"].XValueMember = "Month"; 
     chtWRMonthly.Series["Bought"].XValueMember = "Month"; 
     chtWRMonthly.Series["bRemaining"].XValueMember = "Month"; 
     chtWRMonthly.Series["Sold"].YValueMembers = "sTAccount"; 
     chtWRMonthly.Series["sRemaining"].YValueMembers = "sRemaining"; 
     chtWRMonthly.Series["Bought"].YValueMembers = "bTAccount"; 
     chtWRMonthly.Series["bRemaining"].YValueMembers = "bRemaining"; 
     SCon.Close(); 

どのようにしてチャートの月の名前を修正し、その値を設定できますか?

例:

enter image description here

+0

追加するx値にはどのようなデータ型を使用しますか?彼らは実際のDataTimesですか?次に、X軸のラベルに良いFromtat文字列を使用できます。 100%あなたはそれらを追加しないでください文字列を追加してください! Btw:あなたが見せているグラフィックはあまりにも荒れている私は何がショーであるかを知ることができません.. – TaW

+0

そのちょうどintigerの値は、いいえ – MPERSIA

+0

ですが、それで私は何ができますか? – MPERSIA

答えて

1

残念ながらMSChartは、任意の実際の表現を許可していませんので、私はあなたが直接ヶ月に整数を変換することができるか表示されません。

1)月の文字列を戻す..to ..

2)DateTimesかを戻すためにDataSourceを変更...があり、さまざまな回避策ですが、これはあなたに依存します好みます。

後者は、x値を扱うことができなくなります。

3)DataTableDateTimesを含むように変更します。これは各検索後に行わなければならない。

4)Axis.LabelsをすべてCustomLabelsに置き換えてください。ここで


は、回避策#3の例である:それは、テーブルに新しい列(「DATEX」)を追加し、DateTime.Now.Dateプラスから列「C1」の整数を計算した日付でそれを埋めます。 y値は列 'c2'にあります。

もちろんは現在の日付ではなく、適切な開始DateTimeの値を使用する必要があります。あなたは多分またIntervalTypeXValueMemberタイプについてデータバインディングを伝える必要がありますし、

注意!

最後にあなたがローカライズ(ドイツ)月の名前を表示するために新しい列をフォーマットすることができます..:用

if (!DT.Columns.Contains("dateX")) DT.Columns.Add("dateX", typeof(DateTime)); 

foreach (DataRow row in DT.Rows) 
    row.SetField<DateTime>("dateX", DateTime.Now.Date.AddMonths(row.Field<int>("c1"))); 


Series s = chart1.Series[0]; 
s.XValueMember = "dateX"; 
s.XValueType = ChartValueType.DateTime; 
s.YValueMembers = "c2"; 

chart1.DataSource = DT; 
chart1.DataBind(); 

Axis ax = chart1.ChartAreas[0].AxisX; 
ax.LabelStyle.Format = "MMMM" ; 
ax.IntervalType = DateTimeIntervalType.Months; 
ax.Interval = 1; 

enter image description here

+0

非常に多くのマスターありがとう – MPERSIA

0
ペルシャカ月の名前のための

Dictionary<string, string> MonthsDic = new Dictionary<string, string>(); 
       MonthsDic.Add("1", "فروردین"); 
       MonthsDic.Add("2", "اردیبهشت"); 
       MonthsDic.Add("3", "خرداد"); 
       MonthsDic.Add("4", "تیر"); 
       MonthsDic.Add("5", "مرداد"); 
       MonthsDic.Add("6", "شهریور"); 
       MonthsDic.Add("7", "مهر"); 
       MonthsDic.Add("8", "آبان"); 
       MonthsDic.Add("9", "آذر"); 
       MonthsDic.Add("10", "دی"); 
       MonthsDic.Add("11", "بهمن"); 
       MonthsDic.Add("12", "اسفند"); 

/// 
private void LoadMonthlyReport() 
{ 
DataTable dt = new DataTable(); 
      SqlCommand s = new SqlCommand("ReportMonthly", SCon); 
      s.CommandType = CommandType.StoredProcedure; 
      s.Parameters.AddWithValue("@Year", Year); 
      SCon.Open(); 
      SqlDataReader dr = s.ExecuteReader(); 
      dt.Load(dr);    
      dt.Columns.Add("MonthName", typeof(string)); 
      foreach (DataRow d in dt.Rows) 
      { 
       switch (d["Month"].ToString()) 
       { 
        case "1": 
         d["MonthName"] = "فروردین"; 
         break; 
        case "2": 
         d["MonthName"] = "اردیبهشت"; 
         break; 
        case "3": 
         d["MonthName"] = "خرداد"; 
         break; 
        case "4": 
         d["MonthName"] = "تیر"; 
         break; 
        case "5": 
         d["MonthName"] = "مرداد"; 
         break; 
        case "6": 
         d["MonthName"] = "شهریور"; 
         break; 
        case "7": 
         d["MonthName"] = "مهر"; 
         break; 
        case "8": 
         d["MonthName"] = "آبان"; 
         break; 
        case "9": 
         d["MonthName"] = "آذر"; 
         break; 
        case "10": 
         d["MonthName"] = "دی"; 
         break; 
        case "11": 
         d["MonthName"] = "بهمن"; 
         break; 
        case "12": 
         d["MonthName"] = "اسفند"; 
         break; 
       } 
      } 
      chtWRMonthly.DataSource = dt; 
      chtWRMonthly.Series["Sold"].XValueMember = "MonthName"; 
      chtWRMonthly.Series["sRemaining"].XValueMember = "MonthName"; 
      chtWRMonthly.Series["Bought"].XValueMember = "MonthName"; 
      chtWRMonthly.Series["bRemaining"].XValueMember = "MonthName"; 
      chtWRMonthly.Series["Sold"].YValueMembers = "sTAccount"; 
      chtWRMonthly.Series["sRemaining"].YValueMembers = "sRemaining"; 
      chtWRMonthly.Series["Bought"].YValueMembers = "bTAccount"; 
      chtWRMonthly.Series["bRemaining"].YValueMembers = "bRemaining"; 
      SCon.Close(); 
} 

//を月の番号とSQLに送信

private void chtWRMonthly_MouseClick(object sender, MouseEventArgs e) 
{ 
string MonthName = ""; 
      Boolean S = true; 
      Point MP = new Point(e.X); 
      chtWRMonthly.ChartAreas[0].CursorX.Interval = 0; 
      int X, Px = (int)chtWRMonthly.ChartAreas[0].AxisX.PixelPositionToValue(e.X); 
      X = (int)Math.Round((float)chtWRMonthly.ChartAreas[0].AxisX.PixelPositionToValue(e.X)) - 1; 
      MonthName = chtWRMonthly.Series[0].Points[X].AxisLabel; 
      if (MonthName != "") 
      { 
       if (Px >= X+1) 
        S = false; 

       SqlDataAdapter SDA = new SqlDataAdapter("ReportMonthlyShowInvoices", SCon); 
       SDA.SelectCommand.CommandType = CommandType.StoredProcedure; 
       SDA.SelectCommand.Parameters.AddWithValue("@Year", Year); 
       SDA.SelectCommand.Parameters.AddWithValue("@Month", MonthsDic.First(Pair => Pair.Value == MonthName).Key); 
       SDA.SelectCommand.Parameters.AddWithValue("@S", S); 
       DataTable DT = new DataTable(); 
       SDA.Fill(DT); 
} 
関連する問題