2017-02-17 7 views
0

это myCode:Как привязать объект DataTable к MS Chart

private void frmChart_Load(object sender, EventArgs e) 
    { 
     string cs = ConfigurationManager.ConnectionStrings["dbcs"].ConnectionString; 
     using (SqlConnection Con = new SqlConnection(cs)) 
     { 
      SqlCommand cmdSum = new SqlCommand("Select distinct(UserName),sum(Value) from mytable group by UserName",Con); 
      Con.Open(); 
      SqlDataReader reader = cmdSum.ExecuteReader(); 
      chart1.DataBindTable(reader,"sum(Value)"); 
     } 
     foreach (Series series in chart1.Series) 
     { 
      series.CustomProperties = "DrawingStyle=LightToDark"; 
     } 

    } 

Он показывает мне ошибку в chart1.DatabindTable. также я пробую другой метод, но я не мог справиться с этим.

+0

Показав, что именно эта ошибка поможет нам помочь. Я бы начал с проверки точного имени столбца, к которому вы хотите привязать. – PaulF

+0

Вы пытаетесь построить одно значение для каждого отдельного пользователя? –

+0

@MongZhu да, Thats is true. –

ответ

3

Если все, что вы пытаетесь сделать, это связать таблицу данных, а затем просто сделать это:

 private void Form1_Load(object sender, EventArgs e) 
     { 
      string sql = "your sql here"; 

      SqlDataAdapter adapter = new SqlDataAdapter(sql, connectionString); 
      DataTable dt = new DataTable(); 
      adapter.Fill(dt); 
      chart1.DataBindTable(dt.DefaultView, "UserName"); 
     } 

enter image description here

Примечание при вызове DataBindTable вы должны использовать «UserName» (xField). Не Value или Sum(Value).

+0

большое спасибо за вашу помощь. –

+0

Добро пожаловать! – jsanalytics

+0

Если у меня было два столбца вместо одного, например вместо имени пользователя, у меня были столбцы отправителя и получателя, и я хотел бы показать его значение. можно ли использовать вышеуказанный код? если это правда, я буду так благодарен, если вы поможете мне, потому что я немного изменил код выше, но я не смог получить результат. –

0

проверить вас значения в считывающее .. если у вас есть значения,

попробуйте заменить

chart1.DataBindTable(reader,"sum(Value)"); 

с

chart1.DataBindTable(reader,"Value"); 

когда вы суммировать значения в запросе нужно не упомянуть сумму снова, ваш параметр значения будет иметь сумму

Редактировать --- Обновлен код ..

private void frmChart_Load(object sender, EventArgs e) 
     { 
      string cs = ConfigurationManager.ConnectionStrings["dbcs"].ConnectionString; 
      using (SqlConnection Con = new SqlConnection(cs)) 
      { 
       SqlCommand cmdSum = new SqlCommand("Select distinct(UserName),sum(Value) from mytable group by UserName", Con); 
       Con.Open(); 
       SqlDataReader reader = cmdSum.ExecuteReader(); 
       while (reader.Read()) 
       { 
        chart1.DataBindTable(reader, reader["Value"]); 
       } 

      } 
      foreach (Series series in chart1.Series) 
      { 
       series.CustomProperties = "DrawingStyle=LightToDark"; 
      } 

     } 
+0

Я пробовал chart1.DataBindTable (читатель, «Значение») –

+0

так что же результат? – user7417866

+0

У меня такая же ошибка и нет выхода –