Data Binding Microsoft .NET Chart Control

ruan007

New Member
Hi,

Have anyone used MS Chart control for .NET. I tried to use it on my 10.2B forms but was unable to get the chart displayed, it throwed an error (pls see attachment).

Here is the simple code I tried:
Code:
DEFINE PRIVATE VARIABLE chart1 AS System.Windows.Forms.DataVisualization.Charting.Chart NO-UNDO.
    DEFINE PRIVATE VARIABLE button1 AS System.Windows.Forms.Button NO-UNDO.
 DEFINE PRIVATE VARIABLE components AS System.ComponentModel.IContainer NO-UNDO.
 
 DEFINE VARIABLE rBindS AS Progress.Data.BindingSource NO-UNDO.
    DEFINE VARIABLE bGradeHdl AS HANDLE NO-UNDO.
    def temp-table tt-grade no-undo
          field studentname as char 
          field physics as dec
          field chemistry as dec
          field math as dec.
 
@VisualDesigner.
 METHOD PRIVATE VOID button1_Click( INPUT sender AS System.Object, INPUT e AS System.EventArgs ):
  create tt-grade.
        assign
          studentname = "student 1"
          physics = 90.5
          chemistry = 91
          math = 95.
 
        create tt-grade.
        assign
          studentname = "student 2"
          physics = 80
          chemistry = 75.5
          math = 87.
 
          create tt-grade.
        assign
          studentname = "student 3"
          physics = 62
          chemistry = 88
          math = 78.8.
 
          create tt-grade.
        assign
          studentname = "student 4"
          physics = 68.9
          chemistry = 88
          math = 75.4.
 
        bGradeHdl = BUFFER tt-grade:HANDLE.
        rBindS = NEW Progress.Data.BindingSource(bGradeHdl).
 
        chart1:DataBindTable(rBindS).
  RETURN.
 END METHOD.
 

Attachments

  • mscharterror.doc
    46.5 KB · Views: 6

ruan007

New Member
For someone who is interested in using the .NET Chart control, here is my workaround code. I have to use the .NET dataset as the datasource.
Code:
    def var series1 as  System.Windows.Forms.DataVisualization.Charting.Series no-undo.    
    def var myEnc as System.Text.UTF8Encoding.
    def var myStream as System.IO.MemoryStream.
    def var xmldata as longchar.
    def var netDS as System.Data.DataSet.
 
    def temp-table tt-grade no-undo
          field studentname as char 
          field physics as dec
          field chemistry as dec
          field math as dec.
 
 
@VisualDesigner.
 METHOD PRIVATE VOID testwinchart_Load( INPUT sender AS System.Object, INPUT e AS System.EventArgs ):
 
  create tt-grade.
  assign
          studentname = "student 1"
          physics = 55
          chemistry = 65
          math = 95.
 
  create tt-grade.
  assign
         studentname = "student 2"
         physics = 90
         chemistry = 91
          math = 87.
 
  create tt-grade.
  assign
         studentname = "student 3"
         physics = 80
         chemistry = 87
         math = 78.8.
 
  create tt-grade.
  assign
         studentname = "student 4"
         physics = 60
         chemistry = 88
         math = 75.4.
 
  temp-table tt-grade:WRITE-XML ("LONGCHAR", xmldata).
  myEnc = new System.Text.UTF8Encoding().
  myStream = new System.IO.MemoryStream( myEnc:GetBytes(xmldata), 
                                 0,
                                 myEnc:GetByteCount(xmldata) ).
 
   netDS = new System.Data.DataSet().
   netDS:ReadXml(myStream).                                 
 
   series1 = new System.Windows.Forms.DataVisualization.Charting.Series().
   series1:Name = "Series 1".
   series1:XValueMember = "studentname".
   series1:YValueMembers = "math".
   Chart1:Series:Add(series1).
   chart1:DataSource = netDS.
 
   chart1:DataBind().
   RETURN.
 END METHOD.
 
Top