C# c datagridview过滤数据到livechart
我想通过过滤日期将数据从SQLite数据库传输到饼图。我遇到问题的地方是foreach循环。如何将信息从数据库传输到饼图?很抱歉我的英语不好…您可以尝试以下代码将信息从datagridview转换到饼图C# c datagridview过滤数据到livechart,c#,visual-studio,winforms,c#-4.0,c#-3.0,C#,Visual Studio,Winforms,C# 4.0,C# 3.0,我想通过过滤日期将数据从SQLite数据库传输到饼图。我遇到问题的地方是foreach循环。如何将信息从数据库传输到饼图?很抱歉我的英语不好…您可以尝试以下代码将信息从datagridview转换到饼图 private void btn_gider_bilgi_getir_Click(object sender, EventArgs e) { string veritabaniyolu = "Data source=veritabani.db";
private void btn_gider_bilgi_getir_Click(object sender, EventArgs e)
{
string veritabaniyolu = "Data source=veritabani.db";
string ay = cbox_g_gun.Text;
string yil = cbox_g_yil.Text;
SQLiteConnection baglanti = new SQLiteConnection(veritabaniyolu);
baglanti.Open();
string sql_tarih_sorgula = $"SELECT * FROM Gelirler WHERE GelirTarihi BETWEEN '{yil}-{ay}-01' AND '{yil}-{ay}-31'";
SQLiteDataAdapter da = new SQLiteDataAdapter(sql_tarih_sorgula, baglanti);
DataTable dt = new DataTable();
da.Fill(dt);
bunifuDataGridView1.DataSource = dt;
baglanti.Close();
Func<ChartPoint, string> fu = x => string.Format("{0},{1:P}", x.Y, x.Participation);
SeriesCollection series = new SeriesCollection();
foreach (var item in bunifuDataGridView1)
{
//PieSeries pie = new PieSeries();
//pie.Title = item;
//pie.Values = new ChartValues<int> { (int)item };
//pie.DataLabels = true;
//pie.LabelPoint = fu;
//series.Add(pie);
//pieChart1.Series = series;
}
}
结果:
我需要一个帮助ppppppp请,这是工作,但有些问题在这里。。。为什么都是25%@BrktrL。基于您最初的问题,我认为您只想筛选日期时间。但现在我明白你的意思了。我在另一个问题中作了回答。您可以接受该线程或删除该线程。
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.AllowUserToAddRows = false;
}
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = null;
SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite");
m_dbConnection.Open();
string sql = string.Format("Select * From example where birthdate between '{0}-{1}-01' AND '{0}-{1}-31'",textBox1.Text,textBox2.Text);
SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql, m_dbConnection);
DataTable dt = new DataTable();
adapter.Fill(dt);
dataGridView1.DataSource = dt;
m_dbConnection.Close();
Func<ChartPoint, string> labelPoint = chartPoint => string.Format("{0} ({1:P})", chartPoint.Y, chartPoint.Participation);
// Define a collection of items to display in the chart
SeriesCollection piechartData = new SeriesCollection();
var collection=dataGridView1.Rows.Cast<DataGridViewRow>().GroupBy(x=> x.Cells[1].Value).Where(g=>g.Count()>0).Select(y => new { Element = y.Key, Counter = y.Count() }).ToList();
foreach (var item in collection)
{
piechartData.Add(new PieSeries { Title =Convert.ToDateTime( item.Element).ToShortDateString(), Values = new ChartValues<double> { item.Counter }, DataLabels = true, LabelPoint = labelPoint });
}
// You can add a new item dinamically with the add method of the collection
// Useful when you define the data dinamically and not statically
// Define the collection of Values to display in the Pie Chart
pieChart1.Series = piechartData;
// Set the legend location to appear in the Right side of the chart
pieChart1.LegendLocation = LegendLocation.Right;
}