TeeChart for .NET图表控件如何ADO数据库访问?
TeeChart for .NET是优秀的 4.0 WinForm 图表控件,官方独家授权汉化,集功能全面、性能稳定版、优惠等优势。NET 的 TeeChart for .NET 中文承诺让您在使用和学习上没有语言障碍,最少可以节省30%的开发时间。
简介
将TeeChart控件连接到ADO.NET数据库可以在设计时使用TeeChart编辑器完成,也可以在运行时使用几行代码。
任何系列都可以使用TeeChart编辑器连接到ADO.NET表或查询。每个系列都可以使用相同或不同的ADO.NET数据库连接到相同或不同的表或查询。
这种设计使你在如何将图表连接到数据库方面具有完全的灵活性,因为你不会被限制在只有一个数据库或只有一个表或查询。
数据也是在设计时检索的,所以你在开发时可以看到实际的数据。
在设计时连接到ADO.NET
DataAdapter [VS2003]
在设计时,将一个系列连接到一个ADO.NET数据源的必要步骤是。
1. 从VS.NET工具箱的数据选项卡中,将一个OleDbDataAdapter拖到一个WinForm上,上面有一个TeeChart for .Net对象。
2. 在数据适配器配置向导中点击 "下一步",在下一页中点击 "新连接... "按钮。
3. 现在点击新窗口的 "提供者 "标签,选择 "Microsoft Jet OLE DB提供者",如下图所示。
4. 现在点击同一窗口的 "连接 "标签,从TeeChart for .Net根目录下的样本数据文件夹中选择TeeChart.mdb文件。
5. 点击 "测试连接 "按钮来测试连接,然后点击同一窗口的 "确定 "按钮。
6. 现在点击数据适配器配置向导窗口的 "下一步 "按钮,在出现的窗口中选择 "使用SQL语句 "并再次点击 "下一步 "按钮。
7. 现在点击 "查询生成器 "按钮,添加 "雇员 "表。关闭 "添加表 "窗口,选择 "*(所有列)"复选框。
8. 现在确定这个窗口,点击 "下一步",然后点击 "完成"。
9. 现在打开TeeChart编辑器,添加一个BarSeries,并导航到Series标签的DataSource标签。
10. 从组合框中选择 "数据库",从数据集组合框中选择oleDbDataAdapter1 [System.Data.OleDb.OleDbDataAdapter] 。
11. 设置Labels为 "LASTNAME",Y为 "SALARY",如下图所示。
12. 现在点击应用按钮并运行表单;你现在应该有如下的东西。
BindingSource [VS2005,VS2008,VS2010,VS2012,VS2013]
在设计时,将一个系列连接到一个ADO.NET数据源的必要步骤是。
1. 从VS.NET工具箱的数据选项卡中,将一个BindingSource拖到一个带有TeeChart for .Net对象的WinForm上。
2. 进入数据标签,选择 "显示数据源"
3. 在数据源工具箱上点击右键,选择 "添加新数据源"。
4. 选择数据库,选择/创建连接字符串,在我们的例子中,我们使用Microsoft Access DataBase File(OLE DB),点击继续。
注意:点击测试连接按钮,检查你的数据源的连接情况。
5. 最后在浏览中选择你要连接的表。
6. 从数据源工具箱中选择你想用作数据源的表,并把它拖到你的表单中。
7. 现在打开TeeChart编辑器,加入一个BarSeries,并导航到Series标签的DataSource标签。
8. 从组合框中选择 "数据库",从数据集组合框中选择bindingSource1。
9. 设置标签为 "LASTNAME",Y为 "SALARY",如下图所示。
10. 现在点击 "应用 "按钮并运行表单;你现在应该有如下内容。
单一记录
单一记录图表允许在TeeChart上显示单一数据库记录的全部或部分记录。它可能对数据库视图或表格很有用,例如,每年的销售数字被存储为单独的月份列,"JAN"、"FEB"、"MAR"......等,通过记录显示连续几年的月度销售。
单一记录图表法支持数据集、表格和数据视图。使用图表编辑器选择单记录作为图表系列的数据源类型。
连接到单一记录数据所需的大部分步骤都可以通过图表编辑器实现。为了导航数据源并相应地更新图表,你需要使用Windows.Form的CurrencyManager编写几行代码。请看编码步骤部分的使用示范。
在运行时连接到ADO.NET
[版本 .net 2003]
DataAdapter
上述设计时的步骤可以通过几行代码以编程方式重现。这给了你更多的自由和对数据库操作的控制。
每个系列都有 "DataSource "属性,它决定了数据库值的来源(表或查询),还有 "YValues.DataMember "和 "LabelMember "属性,用于指定我们要绘制的字段。
把一个新的TeeChart for .Net对象拖到一个新的项目和一个新的表格上。
[C#] using System.Data; using System.Data.OleDb; using System.Security; using System.Security.Permissions; private void Form1_Load(object sender, System.EventArgs e) { DataSet masterDataSet = new DataSet(); Bar bar1 = new Bar(tChart1.Chart); try { OpenConnWithJet40(ref masterDataSet); DataTable employeeTable = masterDataSet.Tables["EMPLOYEE"]; bar1.YValues.DataMember = employeeTable.Columns["SALARY"].ToString(); bar1.LabelMember = employeeTable.Columns["LASTNAME"].ToString(); bar1.DataSource = employeeTable; } catch (SecurityException) { MessageBox.Show("The calling method has not been granted sufficient permission to access the Microsoft Jet 4.0 OLE DB Provider."); } } [OleDbPermission(SecurityAction.Demand, Provider = "Microsoft.Jet.OLEDB.4.0")] private void OpenConnWithJet40(ref DataSet masterDataSet) { OleDbConnection testConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=C:\Program Files\Steema Software\TeeChart for .NET v3\Sample data\TeeChart.mdb;"); testConn.Open(); string strCom = "SELECT * FROM Employee"; OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom,testConn); myCommand.Fill(masterDataSet, "Employee"); testConn.Close(); } [VB.Net] Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim MasterDataSet As New DataSet() Dim Bar1 As New Steema.TeeChart.Styles.Bar(TChart1.Chart) Try OpenConnWithJet40(MasterDataSet) Dim employeeTable As DataTable = MasterDataSet.Tables("Employee") Bar1.YValues.DataMember = employeeTable.Columns("SALARY").ToString() Bar1.LabelMember = employeeTable.Columns("LASTNAME").ToString() Bar1.DataSource = employeeTable Catch ex As Exception MessageBox.Show("Microsoft Jet 4.0 OLE DB Provider problem: " & ex.Message) End Try End Sub Private Sub OpenConnWithJet40(ByRef MasterDataSet As DataSet) Dim TestConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Program Files\Steema Software\TeeChart for .NET v3\Sample data\TeeChart.mdb;") TestConn.Open() Dim StrCom As String = "SELECT * FROM Employee" Dim MyCommand As New OleDbDataAdapter(StrCom, TestConn) MyCommand.Fill(MasterDataSet, "Employee") TestConn.Close() End Sub End Class
在.NET 2005版本中,对2005版本的变化不大
[version .net 2005]
DataAdapter
[C#] using System.Data; using System.Data.OleDb; using System.Security; using System.Security.Permissions; private void Form1_Load(object sender, EventArgs e) { //string ConnString = SqlDataSource1.ConnectionString; string sQuery = "select * from Employee"; //SqlConnection myConnection = new SqlConnection(ConnString); string myConnString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\Program Files\\Steema Software\\TeeChart for .NET v3\\Sample data\\TeeChart.mdb;Uid=Admin;Pwd=;"; System.Data.Odbc.OdbcConnection myConnection = new System.Data.Odbc.OdbcConnection(myConnString); //SqlCommand myCommand = new SqlCommand(sQuery, myConnection); System.Data.Odbc.OdbcCommand myCommand = new System.Data.Odbc.OdbcCommand(sQuery, myConnection); myConnection.Open(); //SqlDataReader myReader = myCommand.ExecuteReader(); System.Data.Odbc.OdbcDataReader myReader = myCommand.ExecuteReader(); int XColumn = myReader.GetOrdinal("ID"); int YColumn = myReader.GetOrdinal("SALARY"); int LabelColumn = myReader.GetOrdinal("LASTNAME"); Steema.TeeChart.Styles.Bar bar1 = new Steema.TeeChart.Styles.Bar(tChart1.Chart); while (myReader.Read()) { bar1.Add(Convert.ToInt32(myReader[XColumn]), Convert.ToDouble(myReader[YColumn]), Convert.ToString(myReader[LabelColumn])); } myReader.Close(); myConnection.Close(); } [VB.Net] Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim MasterDataSet As New DataSet() Dim Bar1 As New Steema.TeeChart.Styles.Bar(TChart1.Chart) Try OpenConnWithJet40(MasterDataSet) Dim employeeTable As DataTable = MasterDataSet.Tables("EMPLOYEE") Bar1.YValues.DataMember = employeeTable.Columns("SALARY").ToString() Bar1.LabelMember = employeeTable.Columns("LASTNAME").ToString() Bar1.DataSource = employeeTable Catch ex As Exception MessageBox.Show("Microsoft Jet 4.0 OLE DB Provider problem: " & ex.Message) End Try End Sub Private Sub OpenConnWithJet40(ByRef MasterDataSet As DataSet) Dim TestConn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Program Files\Steema Software\TeeChart for .NET v3\Sample data\TeeChart.mdb;") TestConn.Open() Dim StrCom As String = "SELECT * FROM Employee" Dim MyCommand As New OleDb.OleDbDataAdapter(StrCom, TestConn) MyCommand.Fill(MasterDataSet, "Employee") TestConn.Close() End Sub End Class
如果数据库的值发生了变化,你想 "刷新 "连接并再次检索这些值,你应该这样做。
TChart1.Series(0).CheckDataSource
CheckDataSource "方法将强制该系列再次检索所有记录。
所有的系列也都有 "XValues.ValueSource "属性。这个属性只用于XY图表(当你为每个点有一个X坐标时)。
单一记录
与表的连接
使用图表编辑器将在表格的初始化中创建以下代码。类似的代码可以在运行时用于创建和连接新的SingleRecord数据源。
假设有一个名为sourceTableSet的数据集,表为:sourceTable)。
this.singleRecordSource1 = new Steema.TeeChart.Data.SingleRecordSource(); this.sourceTableSet.DataSetName = "NewDataSet"; this.sourceTableSet.Tables.AddRange(new System.Data.DataTable[] {this.sourceTable}); this.singleRecordSource1.DataSource = this.sourceTableSet; this.singleRecordSource1.ValueMembers = new string[] { "JAN", "FEB", "MAR"}; this.bar1 = new Steema.TeeChart.Styles.Bar(); this.bar1.DataSource = this.singleRecordSource1;
表格导航
TeeChart的SingleRecord使用CurrencyManager组件来导航数据库表并更新Chart。在改变表的记录后,使用CheckDatasource来更新Chart。
例子
private CurrencyManager myCurrencyManager; public void ConnectChartToTable() { myCurrencyManager = (CurrencyManager)this.BindingContext[sourceTable]; singleRecordSource1.RecordCurrency=myCurrencyManager; tChart1[0].CheckDataSource(); }
该表(和图表)可以通过使用CurrencyManager来导航。
private void MovePrevious() { if (myCurrencyManager.Position>0) { myCurrencyManager.Position=myCurrencyManager.Position+1; tChart1[0].CheckDataSource(); } } private void MoveNext() { if (myCurrencyManager.Position<myCurrencyManager.Count) { myCurrencyManager.Position=myCurrencyManager.Position+1; tChart1[0].CheckDataSource(); } }
在ASP.NET中使用ADO.NET
你可以通过ASP.NET连接数据源,在ASP.NET WebForm上使用TeeChart WebChart,其方式与数据源连接到WinForm上的TeeChart组件的方式几乎相同。关于ASP.NET的更多信息,请参见互联网应用教程。
如果你看到了可爱的动物群,欢迎加入展示区QQ:740060302