MaddoxSt Ответов: 1

Как создать круговую диаграмму из datagridview для определенных столбцов


У меня есть datagridview с 5 столбцами, и я хочу сделать круговую диаграмму по нажатию кнопки, взяв только два столбца datagridview
вот картинка объекте datagridview

Изображение datagridview[^]
Итак из этого datagridview я хочу создать круговую диаграмму для категории и итога могу ли я получить помощь пожалуйста :)

Что я уже пробовал:

private void generateChart_Click(object sender, EventArgs e)
        {
            Series s = pieChart.Series.Add("pie");
            s.ChartType = SeriesChartType.Pie;
            s.IsValueShownAsLabel = true;
            for (int colindex = 1; colindex < billingGridView.Columns.Count; colindex++)
            {
                s.Points.AddXY(billingGridView.Columns[colindex].HeaderText,
                               billingGridView[colindex, 0].Value);
            }

Karthik_Mahalingam

какие две колонки?

MaddoxSt

категория и общая сумма из billinggridview у меня есть его фотография выше

Maciej Los

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

1 Ответов

Рейтинг:
4

Karthik_Mahalingam

Обновленное Решение

DataTable dtPieChartData = new DataTable();
          dtPieChartData.Columns.Add("Category");
          dtPieChartData.Columns.Add("Total");
          foreach (DataGridViewRow row in billingGridView.Rows)
          {
              int indexCategoryColumn = 1; // take care of index
              int indexTotalColumn = 4; // take care of index
              dtPieChartData.Rows.Add(row.Cells[indexCategoryColumn].Value,row.Cells[indexTotalColumn].Value);
          }

            chart1.DataSource = dtPieChartData;
           chart1.Series["Series1"].XValueMember = "Category";
           chart1.Series["Series1"].YValueMembers = "Total";
           this.chart1.Titles.Add("Category Title");
           chart1.Series["Series1"].ChartType = SeriesChartType.Pie;
           chart1.Series["Series1"].IsValueShownAsLabel = true;


MaddoxSt

Катик Бангалор братан он бросает исключение из
Элемент диаграммы с именем piechart не может быть найден в коллекции SeriesCollection

Karthik_Mahalingam

Вы должны будете использовать свое имя серии диаграмм

Karthik_Mahalingam

заменить "круговую диаграмму" с "пирог"

MaddoxSt

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

Karthik_Mahalingam

пробовать

DataTable dtPieChartData = new DataTable();
            dtPieChartData.Columns.Add("Category");
            dtPieChartData.Columns.Add("Total");
            dtPieChartData.Rows.Add("Category 1", 100);
            dtPieChartData.Rows.Add("Category 2", 200);
            dtPieChartData.Rows.Add("Category 3", 300); 
            chart1.DataSource = dtPieChartData; 
            chart1.Series["Series1"].XValueMember = "Category";
            chart1.Series["Series1"].YValueMembers = "Total";
            this.chart1.Titles.Add("Category Title");
            chart1.Series["Series1"].ChartType = SeriesChartType.Pie;
            chart1.Series["Series1"].IsValueShownAsLabel = true;

MaddoxSt

Да это работает, но я хочу, чтобы добавить значения из 1-й и 4-й показатель billingGridView по

Karthik_Mahalingam

используйте этот код для заполнения таблицы

DataTable dtPieChartData = new DataTable();
           dtPieChartData.Columns.Add("Category");
           dtPieChartData.Columns.Add("Total");

           DataGridView billingGridView = new DataGridView();
           foreach (DataGridViewRow row in billingGridView.Rows)
           {
               int indexCategoryColumn = 1; // take care of index
               int indexTotalColumn = 4; // take care of index
               dtPieChartData.Rows.Add(row.Cells[indexCategoryColumn],row.Cells[indexTotalColumn);
           }

MaddoxSt

все еще не работаю я чувствую себя плохо беспокою тебя

Karthik_Mahalingam


  DataTable dtPieChartData = new DataTable();
           dtPieChartData.Columns.Add("Category");
           dtPieChartData.Columns.Add("Total"); 
           foreach (DataGridViewRow row in billingGridView.Rows)
           {
               int indexCategoryColumn = 1; // take care of index
               int indexTotalColumn = 4; // take care of index
               dtPieChartData.Rows.Add(row.Cells[indexCategoryColumn].Value,row.Cells[indexTotalColumn].Value);
           }

             chart1.DataSource = dtPieChartData; 
            chart1.Series["Series1"].XValueMember = "Category";
            chart1.Series["Series1"].YValueMembers = "Total";
            this.chart1.Titles.Add("Category Title");
            chart1.Series["Series1"].ChartType = SeriesChartType.Pie;
            chart1.Series["Series1"].IsValueShownAsLabel = true;

MaddoxSt

Наконец то сработало большое спасибо за твою помощь братан :)
можете ли вы изменить это сверху, чтобы я мог пометить его как отработанное решение?

Karthik_Mahalingam

добро пожаловать :)
решение обновлено.