[vb.net] contenttype="image/png" & dataconnectie

Pagina: 1
Acties:

  • bgrr
  • Registratie: Oktober 2001
  • Niet online
Afgelopen dagen zitten knommelen met onderstaande code om on the fly een graph te maken voor een website. Dit stuk lukt aardig. Echter nu wil ik op een of andere manier data ophalen uit een sql2000 db welke gebruikt wordt in de graph.

Het lukt om inn Visual web designer 2005 om een datagrid op te halen uit een db maar op een of andere manier ziet de source van die aspx page er heel anders uit. Zie source datagrid.

Na een zoektocht op google ben ik heb nergens iets gevonden hoe ik in de source van de on the fly graph een dataconnectie / query kan doen.

Tot op heden altijd met ASP classic gewerkt dus ben totaal nieuw in de syntax van .Net

Iemand die mij op weg/ op het goeie spoor wilt helpen ondanks dat request niet toegestaan zijn.


source on the fly graph
code:
1
**** deleted ***(


Source datagrid
code:
1
**** deleted ****

[ Voor 66% gewijzigd door bgrr op 15-11-2006 23:00 ]


Verwijderd

Wat wil je nou precies doen :? Je wilt een datagrid, wat een tabel met data wordt, gebruiken in een graph. Maar hoe???

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

Zoek eens op de DataSource en Databind members. Die zullen ongetwijfeld bestaan.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:39

gorgi_19

Kruimeltjes zijn weer op :9

WebChart zit niet in het .Net Framework, weet je zeker dat je dat componentje ook gebruikt? En wil je een image genereren en die presenteren, of wil je het simpel houden met een datagridje en een 1x1 image die je gaat uitrekken?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • bgrr
  • Registratie: Oktober 2001
  • Niet online
Ben er al uit.

Vanavond nog eens zitten prutsen en tot t volgende resultaat gekomen

Tis een PNG plaatje welke on the fly gegenereerd wordt aan de hand van data uit een tabel en gestreamd wordt naar de browser zonder op je server gesaved te worden.

Code is nog ranzig qua dims maar dat los ik verder nog wel op..

namespace webchart is een dll welke als freeware te downloaden is op http://www.carlosag.net/Tools/WebChart/Default.aspx.
Een van de weinige freeware mogelijkheden om graphs te maken. De rest van de pakketten heeft een flink prijskaartje.


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<%@ Page Language="VB" contenttype="image/png" debug="true"%>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="WebChart" %>
<%@ Import Namespace="System.Data.OleDb" %> 

<script runat=server>
    Sub Page_Load(ByVal o As Object, ByVal e As EventArgs)
        Dim wcEng As New ChartEngine()
        wcEng.Size = New Size(800, 600)
 
        Dim wcCharts As New ChartCollection(wcEng)
        wcEng.Charts = wcCharts
            
        Dim slChart As New SmoothLineChart()
        'Dim slChart As New StackedColumnChart()
        slChart.Line.Color = Color.FromArgb(128, 0, 0)
        slChart.Legend = "test"
        slChart.ShowLineMarkers = False
        slChart.ShowLegend = False
         
        Dim sDBPath As String = Request.MapPath(".") & "\NWind.mdb"
        Dim sCnnString As String = "Provider=Microsoft.Jet.Oledb.4.0;" & "Data Source=" & sDBPath
        Dim oCnn As New OleDbConnection(sCnnString)
        Dim sSQL As String = "SELECT Products.ProductID, Products.UnitsInStock FROM Products;"
        Dim oCmd As New OleDbCommand(sSQL, oCnn)
        oCnn.Open()
        Dim drEmployee As OleDbDataReader = oCmd.ExecuteReader()

        Try
            Do While (drEmployee.Read())
                slChart.Data.Add(New ChartPoint(drEmployee.GetValue(0), drEmployee.GetValue(1)))
            Loop
        Finally
            drEmployee.Close()
            oCnn.Close()
        End Try
       
        wcCharts.Add(slChart)

        SetMoreProperties(wcEng)
        Dim bmp As Bitmap
        Dim memStream As New System.IO.MemoryStream()
        bmp = wcEng.GetBitmap()
        bmp.Save(memStream, System.Drawing.Imaging.ImageFormat.Png)
        memStream.WriteTo(Response.OutputStream)
        Response.End()
    End Sub

    ' This are all Optional properties, You can call this method to change the look of your chart
    Private Sub SetMoreProperties(ByVal engine As ChartEngine)
        Dim myFont As New System.Drawing.Font("Tahoma", 8)
        engine.XTitle = New ChartText()
        
        Dim horizontalFormat As New StringFormat()
        horizontalFormat.LineAlignment = StringAlignment.Center
        engine.XTitle.StringFormat = horizontalFormat
        engine.XTitle.Text = "Datum"
        engine.XTitle.Font = myFont
        engine.YTitle = New ChartText()
        engine.YTitle.Font = myFont
        
        Dim verticalFormat As New StringFormat()
        verticalFormat.FormatFlags = StringFormatFlags.DirectionVertical
        verticalFormat.Alignment = StringAlignment.Center
        engine.YTitle.StringFormat = verticalFormat
        engine.YTitle.Text = "Verbruik ltr/km"
        engine.Title = New ChartText()
        engine.Title.Text = "autoverbruik"
        
        engine.ShowXValues = True
        engine.ShowYValues = True
        engine.Padding = 30
        engine.ChartPadding = 30
        engine.Background.Color = Color.FromArgb(192, 192, 192)
        engine.PlotBackground.Color = Color.FromArgb(102, 102, 102)
        engine.GridLines = WebChart.GridLines.Horizontal
    End Sub
</script>

[ Voor 4% gewijzigd door bgrr op 15-11-2006 22:58 ]


  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

En toch staat op de website die je linkt dat je een databind kan gebruiken:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        Dim ds As DataSet = GetDataSet()
        Dim view As DataView = ds.Tables(0).DefaultView
           
        Dim chart As New SmoothLineChart()
        chart.Line.Color = Color.SteelBlue
        chart.Legend = "Value 1"
        chart.DataSource = view
        chart.DataXValueField = "Description"
        chart.DataYValueField = "Value1"
        chart.DataBind()
        ChartControl1.Charts.Add(chart)
 
        Dim chart1 As New SmoothLineChart()
        chart1.Line.Color = Color.Red
        chart1.Legend = "Value 2"
        chart1.DataSource = view
        chart1.DataXValueField = "Description"
        chart1.DataYValueField = "Value2"
        chart1.DataBind()
        ChartControl1.Charts.Add(chart1)
       
        ConfigureColors()
       
        ChartControl1.RedrawChart()
Pagina: 1