WPF toolkit tworzenie wykresu

Odpowiedz Nowy wątek
2014-10-21 22:31
Misiaaaaa
0

Hej ;)

Potrzebuję pomocy. Czy wiecie jak zrobić wykres na podstawie danych zawartych w datagrid w wfp przy użyciu toolkitu? Nie mogę sobie z tym poradzić, a niestety jest mi to potrzebne.

Pozostało 580 znaków

2014-10-21 23:22
0

Masz na myśli ten toolkit http://www.codeproject.com/Ar[...]Controls-Line-Bar-Area-Pie-Co ?
Prawdopodobnie trzeba będzie konwertować przy bindowaniu, w ostateczności myślę że da się te dane wrzucić z code behind.
Jutro będę mógł się temu przyjrzeć, chyba że ktoś inny Ci pomoże.

Znalazłeś może chwilkę czasu, żeby przyjrzeć się mojemu problemowi? - Misiaaaa 2014-10-22 21:46

Pozostało 580 znaków

2014-10-21 23:27
Misiaaaaa
0

Tak, chodzi dokładnie o ten toolkit. Będę bardzo wdzięczna za pomoc! i dziękuję za odp.

Pozostało 580 znaków

2014-10-22 22:47
0

Czemu nie weźmiesz tych danych do charta z tego samego źródła skąd idą do datagrid?

Pozostało 580 znaków

2014-10-22 23:06
0

Próbowałam, ale też mi się nie udało. Nie jestem w tym zaawansowana, więc pewnie temu... problem polega na tym, że dane do dataGridu pobieram z bazy danych na podstawie zapytania, które zawiera dane podane przez użytkownika. Konkretnie użytkownik wybiera sobie datę i w dataGridzie wyświetlają się tylko rekordy obejmujące wybraną datę. Nie wiem jak podłączyć wynik zapytania do wykresu, więc myślałam, że może z DataGridu będzie łatwiej.

Pozostało 580 znaków

2014-10-22 23:22
0

Bindując bezpośrednio z gridview dostaje pustą kolekcję która nie chce się odświeżać, nie wiem czemu.

Stwórz kolekcje którą uzupełnisz danymi z bazy, później później tą kolekcją uzupełnisz gridview i chart.
Pokaż może jak to masz zrobione.

edytowany 1x, ostatnio: dam1an, 2014-10-22 23:24

Pozostało 580 znaków

2014-10-23 11:17
0

Wczytanie danych do DataGrid:

        string connetionString = null;
        SqlConnection conn;
        connetionString = @"data source= localhost\sqlExpress; initial catalog= Cukrzyca;integrated security=TRUE";

        conn = new SqlConnection(connetionString);

        try
        {
            string nazwa = tbNazwa.Text;
            string data = datePicker1.SelectedDate.Value.ToShortDateString();
            conn.Open();
            string select = "SELECT w.pora_dnia AS 'Pora', w.poziom_glukozy AS 'PoziomGlukozy' FROM Wpisy w WHERE nazwa_uzytkownika='" + nazwa + "' AND data_wpisu='" + data + "'";
            SqlDataAdapter adapter = new SqlDataAdapter(select, conn);
            SqlCommandBuilder commandBuilder = new SqlCommandBuilder(adapter);
            DataSet ds = new DataSet();
            DataTable dt = new DataTable("Wpisy");
            adapter.Fill(dt);
            dgPoziomGlukozy.ItemsSource = dt.DefaultView;

            conn.Close();
        }
        catch
        {

        }

Wczytanie danych do wykresu próbowałam zrobić w ten sposób, ale pojawia się wyjątek:

        string connetionString = null;
        connetionString = @"data source= localhost\sqlExpress; initial catalog= Cukrzyca;integrated security=TRUE";
        using (SqlConnection conn = new SqlConnection(connetionString))
        {
            DataTable dt = new DataTable("Wpisy");
            conn.Open();
            string data = datePicker1.SelectedDate.Value.ToShortDateString();
            string select = "SELECT w.pora_dnia AS 'Pora', w.poziom_glukozy AS 'PoziomGlukozy' FROM Wpisy w WHERE nazwa_uzytkownika='misia' AND data_wpisu='2014-10-20'";
            SqlCommand cmd = new SqlCommand(select, conn);
            cmd.CommandType = CommandType.Text;
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            adapter.Fill(dt);
            wykresPoziomuGlukozy.DataContext = dt.DefaultView;
            conn.Close();
        }
<charttools:chart x:name="wykresPoziomuGlukozy" title="Poziomy glukowy w wybranym dniu" margin="273,253,85,13"> <charttools:columnseries itemssource="{Binding}" independentvaluebinding="{Binding Path = Pora}" dependentvaluebinding="{Binding Path=Value}" title="{Binding pora}"></charttools:columnseries> </charttools:chart>

Pozostało 580 znaków

2014-10-23 15:54
1

Żeby już za dużo nie komplikować to z obiektu DataTable w metodzie uzupełniającej datagrid pobierze się dane i wrzuci do charta.
Łap przykład:

            DataTable table = new DataTable();
            table.Columns.Add("Value", typeof(int));
            table.Columns.Add("Key", typeof(string));

            table.Rows.Add(25, "Dfdd");
            table.Rows.Add(50, "Sdf");
            table.Rows.Add(10, "sdfsd"); 

            var list = new ObservableCollection<KeyValuePair<int, string>>();

            foreach(DataRow row in table.Rows)
            {
                list.Add(new KeyValuePair<int, string>((int)row[0], row[1].ToString()));
            }
            chart.DataContext = list;
<chartingToolkit:Chart x:Name="chart" HorizontalAlignment="Left" Margin="10,10,0,0" Title="Chart Title" VerticalAlignment="Top" 
                               Height="300" Width="338" >            <chartingToolkit:ColumnSeries DependentValuePath="Key" IndependentValuePath="Value" ItemsSource="{Binding}" />
        </chartingToolkit:Chart>

Pozostało 580 znaków

2014-10-23 17:10
0

Dziękuję Ci za pomoc i poświęcony czas. Niestety nadal mam problem, wyskakuje wyjątek w momencie
wykresPoziomuGlukozy.DataContext = list;

4892987762.png

Pozostało 580 znaków

2014-10-23 17:38
0

Pokaż jak to zrobiłaś.

Pozostało 580 znaków

2014-10-23 18:00
0
        private void btnOK1_Click(object sender, RoutedEventArgs e)
        {
                nazwa = "Misia";
                string data = datePicker1.SelectedDate.Value.ToShortDateString();

                string connetionString = @"data source= localhost\sqlExpress; initial catalog= Cukrzyca;integrated security=TRUE";
                SqlConnection conn = new SqlConnection(connetionString);

                conn.Open();

                string select = "SELECT  w.poziom_glukozy AS 'PoziomGlukozy', w.pora_dnia AS 'Pora'FROM Wpisy w WHERE nazwa_uzytkownika='" + nazwa + "' AND data_wpisu='" + data + "'";
                SqlDataAdapter adapter = new SqlDataAdapter(select, conn);
                SqlCommandBuilder commandBuilder = new SqlCommandBuilder(adapter);
                DataSet ds = new DataSet();
                DataTable table = new DataTable("Wpisy");
                adapter.Fill(table);
                //dgPoziomGlukozy.ItemsSource = table.DefaultView;

                table.Columns.Add("Value", typeof(decimal));
                table.Columns.Add("Key", typeof(string));

                var list = new ObservableCollection<KeyValuePair< decimal, string>>();

                foreach (DataRow row in table.Rows)
                {
                        list.Add(new KeyValuePair<decimal, string>((decimal)row[0], row[1].ToString()));
                }
                wykres.DataContext = list;

                conn.Close();

        }
Wydaje mi się że tu jest dobrze, pokaż jeszcze xaml. - dam1an 2014-10-23 18:15

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0