CData ADO.NET Provider と DevExpress Data Grid の使用



CData ADO.NET Provider は、さまざまなサードパーティコンポーネントやツールで使用できる標準ベースのライブラリです。DevExpress コントロールを CData の各種プロバイダーと組み合わせることで、多様なデータソースのデータを視覚化できます。

この記事では、プロバイダーを使用して DevExpress の Windows Forms および Web コントロールにデータバインドする方法を紹介します。標準的な ADO.NET のデータバインド手順に従うことで、UI コントロールからライブデータへの双方向アクセスが可能になります。ここでは、現在のデータを表示する DevExpress チャートへのデータバインド方法を解説します。

Windows Forms コントロール

以下のコードは、DevExpress チャート(ChartControl1)に Salesforce データを設定する方法を示しています。SalesforceDataAdapter は ChartControl1 の Series プロパティにバインドされ、WebChartControl1 の Diagram プロパティで x 軸と y 軸をカラム名として定義します。

using (SalesforceConnection connection = new SalesforceConnection(
"user=myuser;password=mypassword;SecurityToken=mysecuritytoken")) {
  SalesforceDataAdapter dataAdapter = new SalesforceDataAdapter(
  "Select A.BillingState, SUM(O.Amount) AS SUM_O_Amount From  Opportunity O, Account A Group By A.BillingState", connection);
  DataTable table = new DataTable();
  dataAdapter.Fill(table);
  DevExpress.XtraCharts.Series series = new DevExpress.XtraCharts.Series();
  chartControl1.Series.Add(series);
  series.DataSource = table;
  series.ValueDataMembers.AddRange(new string[] { "SUM_O_Amount" });
  series.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.Qualitative;
  series.ArgumentDataMember = "BillingState";
  series.ValueScaleType = DevExpress.XtraCharts.ScaleType.Numerical;
  chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
  ((DevExpress.XtraCharts.SideBySideBarSeriesView)series.View).ColorEach = true;
}

Web コントロール

以下のコードは、DevExpress Web コントロールに Salesforce データを設定する方法を示しています。SalesforceDataAdapter はチャート(WebChartControl1)の Series プロパティにバインドされ、WebChartControl1 の Diagram プロパティで x 軸と y 軸をカラム名として定義します。

using (SalesforceConnection connection = new SalesforceConnection(
"user=myuser;password=mypassword;SecurityToken=mysecuritytoken")) {
  SalesforceDataAdapter dataAdapter = new SalesforceDataAdapter(
  "Select A.BillingState, SUM(O.Amount) AS SUM_O_Amount From  Opportunity O, Account A Group By A.BillingState", connection);
  DataTable table = new DataTable();
  dataAdapter.Fill(table);
  DevExpress.XtraCharts.Series series = new DevExpress.XtraCharts.Series();
  chartControl1.Series.Add(series);
  series.DataSource = table;
  series.ValueDataMembers.AddRange(new string[] { "SUM_O_Amount" });
  series.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.Qualitative;
  series.ArgumentDataMember = "BillingState";
  series.ValueScaleType = DevExpress.XtraCharts.ScaleType.Numerical;
  chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
  ((DevExpress.XtraCharts.SideBySideBarSeriesView)series.View).ColorEach = true;
}