WPF toolkit tworzenie wykresu

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.

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.

0

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

0

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

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.

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.

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>
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>
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

0

Pokaż jak to zrobiłaś.

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