原創|其它|編輯:郝浩|2012-07-12 21:52:55.000|閱讀 448 次
概述:上述在設計時中的步驟可以通過一些編碼來實現。這使您能更加自由和完全的控制數據庫操作。每個數據序列都擁有“DataSource”屬性,屬性決定了數據庫值(表或查詢)的來源,并且“YValues.DataMember”和“LabelMember”屬性指定我們想要繪制的字段。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
[.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版的變化。
[.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.Loa
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
如果數據庫的值發生改變,你要“refresh”連接并重新檢索值,你應該這樣做:
TChart1.Series(0).CheckDataSource
“CheckDataSource”方法會迫使數據序列重新檢索所有的記錄。
所有的數據序列同樣擁有“XValues.ValueSource”屬性,這個屬性只用在XY圖表中(當你在每個點都擁有X坐標)。
單條記錄
連接到表
使用圖表編輯器將在窗體的初始化中創建下面的代碼。類似的代碼可用于在運行時創建并連接新的單條記錄數據源。
(假設一個DataSet調用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組件來檢索數據庫的表單并更新到圖表。在表單中的記錄變更后應該使用CheckDatasource來更新圖表。
例子
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();
}
}
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網