DataSourceView.ExecuteSelect メソッド
アセンブリ: System.Web (system.web.dll 内)

Protected Friend MustOverride Function ExecuteSelect ( _ arguments As DataSourceSelectArguments _ ) As IEnumerable
Dim arguments As DataSourceSelectArguments Dim returnValue As IEnumerable returnValue = Me.ExecuteSelect(arguments)
protected public: virtual IEnumerable^ ExecuteSelect ( DataSourceSelectArguments^ arguments ) abstract
protected internal abstract function ExecuteSelect ( arguments : DataSourceSelectArguments ) : IEnumerable
戻り値
基になるデータ ストレージのデータで構成される IEnumerable リスト。

基になるストレージからデータを取得し、そのデータを IEnumerable オブジェクトとして返すには、ExecuteSelect メソッドを呼び出します。挿入や並べ替えなどの操作がサポートされない場合でも、基になるデータ ストレージからのデータの取得はすべてのデータ ソース コントロールでサポートされます。データ バインド コントロールでは、DataSourceChanged イベントまたは DataBind メソッド呼び出しの結果として、いつでもデータのリストを要求する可能性があるので、データの取得は要求に応じて実行される必要があります。

DataSourceView クラスを拡張するクラスで、ExecuteSelect メソッドをオーバーライドする方法を次のコード例に示します。CsvDataSourceView でコンマ区切りのファイル (.csv) を開いて 1 行ずつ解析し、メモリ内でデータを保持するために DataTable オブジェクトと DataView オブジェクトを作成します。最後に、並べ替え式が DataSourceSelectArguments オブジェクトで指定されている場合にはその並べ替え式を適用し、DataView オブジェクトを IEnumerable インスタンスとして返します。このコード例は、DataSourceView クラスのトピックで取り上げているコード例の一部分です。
' Get data from the underlying data source. ' Build and return a DataView, regardless of mode. Protected Overrides Function ExecuteSelect(selectArgs As DataSourceSelectArguments) _ As System.Collections.IEnumerable Dim dataList As IEnumerable = Nothing ' Open the .csv file. If File.Exists(Me.SourceFile) Then Dim data As New DataTable() ' Open the file to read from. Dim sr As StreamReader = File.OpenText(Me.SourceFile) Try ' Parse the line Dim dataValues() As String Dim col As DataColumn ' Do the following to add schema. dataValues = sr.ReadLine().Split(","c) ' For each token in the comma-delimited string, add a column ' to the DataTable schema. Dim token As String For Each token In dataValues col = New DataColumn(token, System.Type.GetType("System.String")) data.Columns.Add(col) Next token ' Do not add the first row as data if the CSV file includes column names. If Not IncludesColumnNames Then data.Rows.Add(CopyRowData(dataValues, data.NewRow())) End If ' Do the following to add data. Dim s As String Do s = sr.ReadLine() If Not s Is Nothing Then dataValues = s.Split(","c) data.Rows.Add(CopyRowData(dataValues, data.NewRow())) End If Loop Until s Is Nothing Finally sr.Close() End Try data.AcceptChanges() Dim dataView As New DataView(data) If Not selectArgs.SortExpression Is String.Empty Then dataView.Sort = selectArgs.SortExpression End If dataList = dataView Else Throw New System.Configuration.ConfigurationErrorsException("File not found, " + Me.SourceFile) End If If dataList is Nothing Then Throw New InvalidOperationException("No data loaded from data source.") End If Return dataList End Function 'ExecuteSelect Private Function CopyRowData([source]() As String, target As DataRow) As DataRow Try Dim i As Integer For i = 0 To [source].Length - 1 target(i) = [source](i) Next i Catch iore As IndexOutOfRangeException ' There are more columns in this row than ' the original schema allows. Stop copying ' and return the DataRow. Return target End Try Return target End Function 'CopyRowData
// Get data from the underlying data source. // Build and return a DataView, regardless of mode. protected override IEnumerable ExecuteSelect(DataSourceSelectArguments selectArgs) { IEnumerable dataList = null; // Open the .csv file. if (File.Exists(this.SourceFile)) { DataTable data = new DataTable(); // Open the file to read from. using (StreamReader sr = File.OpenText(this.SourceFile)) { // Parse the line string s = ""; string[] dataValues; DataColumn col; // Do the following to add schema. dataValues = sr.ReadLine().Split(','); // For each token in the comma-delimited string, add a column // to the DataTable schema. foreach (string token in dataValues) { col = new DataColumn(token,typeof(string)); data.Columns.Add(col); } // Do not add the first row as data if the CSV file includes column names. if (! IncludesColumnNames) data.Rows.Add(CopyRowData(dataValues, data.NewRow())); // Do the following to add data. while ((s = sr.ReadLine()) != null) { dataValues = s.Split(','); data.Rows.Add(CopyRowData(dataValues, data.NewRow())); } } data.AcceptChanges(); DataView dataView = new DataView(data); if (selectArgs.SortExpression != String.Empty) { dataView.Sort = selectArgs.SortExpression; } dataList = dataView; } else { throw new System.Configuration.ConfigurationErrorsException("File not found, " + this.SourceFile); } if (null == dataList) { throw new InvalidOperationException("No data loaded from data source."); } return dataList; } private DataRow CopyRowData(string[] source, DataRow target) { try { for (int i = 0;i < source.Length;i++) { target[i] = source[i]; } } catch (System.IndexOutOfRangeException) { // There are more columns in this row than // the original schema allows. Stop copying // and return the DataRow. return target; } return target; }

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からDataSourceView.ExecuteSelect メソッドを検索する場合は、下記のリンクをクリックしてください。

- DataSourceView.ExecuteSelect メソッドのページへのリンク