ASP.NET GridViewで検索機能を追加~ObjectDataSource TypedDataSet~

GridViewで一覧表示 ~ObjectDataSource(TypedDataSet)~ を修正して検索機能を追加します。

■型付DataSetにメソッドを追加します。
CompanyDataSetデザイナのCompanyTableAdapterの右クリックメニューより「クエリーの追加」を選択します。

「SQLステートメントを使用する」を選択します。

「複数行を返すSELECT」を選択します。

「クエリビルダ」ボタンをクリックします。

条件式を設定します。
CompanyIDフィールドの並べ替えの種類を「昇順」
CompanyNameフィールドのフィルタを「Like '%' + @CompanyName + '%'」
CompanyKanaフィールドのフィルタを「Like '%' + @CompanyKana + '%'」

「次へ」ボタンをクリックします。

メソッド名を入力します。

完了します。


■検索条件指定用のコントロールを配置します。


■ObjectDataSorceを修正します。
ObjectDataSourceのスマートタグより「データソースの構成」をクリックします。
ビジネスオブジェクトに「CompanyDataSetTableAdapters.CompanyTableAdapter」を選択します。

SELECTメソッドに先ほど作成した「GetDataByNameAndKana」メソッドを選択します。
(選択に表示されない場合は、リビルドしてください。)

パラメータの定義を行います。
パラメータ[companyName]のパラメータソースに[Control]を選択し、ControlIDに[txtCompanyName]、DefaultValueに「%」を設定します。

同様に、パラメータ[companyKana]のパラメータソースに[Control]を選択し、ControlIDに[txtCompanyKana]、DefaultValueに「%」を設定します。


■空データ時のメッセージを作成します。
GridViewのスマートタグより「テンプレートの編集」を選択します。
スマートタグの表示ボックスで「EmptyDataTemplate」が選択されていることを確認します。
EmptyDataTemplateボックスにLabelコントロールを配置し
Textプロパティに「該当するデータがありません。<br>抽出条件を指定してから「検索」ボタンをクリックしてください。」を設定します。
ForeColorプロパティをredに設定します。
スマートタグより「テンプレート編集の終了」をクリックします。


■実行して確認します。

ASP.NET GridViewで検索機能を追加~ObjectDataSource DataSet~

GridViewで一覧表示 ~ObjectDataSource(DataSet)~ を修正して検索機能を追加します。

■データアクセスクラスを修正します。
「Customer.vb」の「GetCompanyData」メソッドを以下のように修正します。
Imports Microsoft.VisualBasic

Imports System.Data

Imports System.Data.Common

Imports System.ComponentModel




''' <summary>

''' 会社クラスです。

''' </summary>

''' <remarks></remarks>

Public Class Company

    ''' <summary>

    ''' 会社データを取得します。

    ''' </summary>

    ''' <returns></returns>

    ''' <remarks></remarks>

    <DataObjectMethod(DataObjectMethodType.SelectTrue)> _

    Public Shared Function GetCompanyData(ByVal companyName As StringByVal companyKana As StringAs DataSet

        'App.configより接続文字列を取得します。

        Dim setting As ConnectionStringSettings

        setting = ConfigurationManager.ConnectionStrings("ConnectionString")

        'ファクトリーオブジェクトを作成します。

        Dim factory As DbProviderFactory

        factory = DbProviderFactories.GetFactory(setting.ProviderName)

        'コネクションオブジェクトを作成します。

        Dim cnn As DbConnection

        cnn = factory.CreateConnection

        cnn.ConnectionString = setting.ConnectionString

        'SQLを作成します。

        Dim sql As New System.Text.StringBuilder

        sql.Append("SELECT [CompanyID],[CompanyName],[CompanyKana]")

        sql.Append(" FROM [tblCompany]")

        sql.Append(" WHERE")

        sql.Append(" ([CompanyName] LIKE '%' + @CompanyName + '%')")

        sql.Append(" AND")

        sql.Append(" ([CompanyKana] LIKE '%' + @CompanyKana + '%')")

        'コマンドオブジェクトを作成します。

        Dim cmd As DbCommand

        cmd = factory.CreateCommand

        cmd.Connection = cnn

        cmd.CommandText = sql.ToString

        'パラメータを設定します。

        '--会社名

        Dim prms(1As DbParameter

        prms(0) = factory.CreateParameter

        prms(0).ParameterName = "@CompanyName"

        prms(0).Value = companyName

        '--会社名カナ

        prms(1) = factory.CreateParameter

        prms(1).ParameterName = "@CompanyKana"

        prms(1).Value = companyKana

        '--コマンドに追加します。

        cmd.Parameters.AddRange(prms)

        'アダプターオブジェクトを作成します。

        Dim adp As DbDataAdapter

        adp = factory.CreateDataAdapter

        adp.SelectCommand = cmd

        'データテーブルを作成します。

        Dim ds As New DataSet

        adp.Fill(ds)

        Return ds

    End Function




End Class


■検索条件指定用のコントロールを配置します。


■ObjectDataSorceを修正します。
ObjectDataSourceのスマートタグより「データソースの構成」をクリックします。
ビジネスオブジェクトに先ほど作成したCompanyクラスを選択します。

SELECTメソッドにCompanyクラスのGetCompanyDataメソッドを選択します。

パラメータの定義を行います。
パラメータ[companyName]のパラメータソースに[Control]を選択し、ControlIDに[txtCompanyName]、DefaultValueに「%」を設定します。

同様に、パラメータ[companyKana]のパラメータソースに[Control]を選択し、ControlIDに[txtCompanyKana]、DefaultValueに「%」を設定します。


■空データ時のメッセージを作成します。
GridViewのスマートタグより「テンプレートの編集」を選択します。
スマートタグの表示ボックスで「EmptyDataTemplate」が選択されていることを確認します。
EmptyDataTemplateボックスにLabelコントロールを配置し
Textプロパティに「該当するデータがありません。<br>抽出条件を指定してから「検索」ボタンをクリックしてください。」を設定します。
ForeColorプロパティをredに設定します。
スマートタグより「テンプレート編集の終了」をクリックします。


■実行して確認します。

ASP.NET GridViewで検索機能を追加~ObjectDataSource DataReader~

GridViewで一覧表示 ~ObjectDataSource(DataReader)~ を修正して検索機能を追加します。

■データアクセスクラスを修正します。
「Customer.vb」の「GetCompanyData」メソッドを以下のように修正します。
Imports Microsoft.VisualBasic

Imports System.Data

Imports System.Data.Common

Imports System.ComponentModel




''' <summary>

''' 会社クラスです。

''' </summary>

''' <remarks></remarks>

Public Class Company



    ''' <summary>

    ''' 会社データを取得します。

    ''' </summary>

    ''' <returns></returns>

    ''' <remarks></remarks>

    <DataObjectMethod(DataObjectMethodType.SelectTrue)> _

    Public Shared Function GetCompanyData(ByVal companyName As StringByVal companyKana As StringAs DbDataReader

        'App.configより接続文字列を取得します。

        Dim setting As ConnectionStringSettings

        setting = ConfigurationManager.ConnectionStrings("ConnectionString")

        'ファクトリーオブジェクトを作成します。

        Dim factory As DbProviderFactory

        factory = DbProviderFactories.GetFactory(setting.ProviderName)

        'コネクションオブジェクトを作成します。

        Dim cnn As DbConnection

        cnn = factory.CreateConnection

        cnn.ConnectionString = setting.ConnectionString

        'SQLを作成します。

        Dim sql As New System.Text.StringBuilder

        sql.Append("SELECT [CompanyID],[CompanyName],[CompanyKana]")

        sql.Append(" FROM [tblCompany]")

        sql.Append(" WHERE")

        sql.Append(" ([CompanyName] LIKE '%' + @CompanyName + '%')")

        sql.Append(" AND")

        sql.Append(" ([CompanyKana] LIKE '%' + @CompanyKana + '%')")

        'コマンドオブジェクトを作成します。

        Dim cmd As DbCommand

        cmd = factory.CreateCommand

        cmd.Connection = cnn

        cmd.CommandText = sql.ToString

        'パラメータを設定します。

        '--会社名

        Dim prms(1As DbParameter

        prms(0) = factory.CreateParameter

        prms(0).ParameterName = "@CompanyName"

        prms(0).Value = companyName

        '--会社名カナ

        prms(1) = factory.CreateParameter

        prms(1).ParameterName = "@CompanyKana"

        prms(1).Value = companyKana

        '--コマンドに追加します。

        cmd.Parameters.AddRange(prms)

        'コネクションをオープンします。

        cnn.Open()

        'DbDataReaderを返します。

        'DbDataReaderオブジェクトが破棄されたタイミングで、それに関連付いたDbConnectionオブジェクトも自動的に破棄されます。

        '例外発生時もcnn.Closeする必要はありません。

        Return cmd.ExecuteReader(CommandBehavior.CloseConnection)

    End Function




End Class


■検索条件指定用のコントロールを配置します。


■ObjectDataSorceを修正します。
ObjectDataSourceのスマートタグより「データソースの構成」をクリックします。
ビジネスオブジェクトに先ほど作成したCompanyクラスを選択します。

SELECTメソッドにCompanyクラスのGetCompanyDataメソッドを選択します。

パラメータの定義を行います。
パラメータ[companyName]のパラメータソースに[Control]を選択し、ControlIDに[txtCompanyName]、DefaultValueに「%」を設定します。

同様に、パラメータ[companyKana]のパラメータソースに[Control]を選択し、ControlIDに[txtCompanyKana]、DefaultValueに「%」を設定します。


■空データ時のメッセージを作成します。
GridViewのスマートタグより「テンプレートの編集」を選択します。
スマートタグの表示ボックスで「EmptyDataTemplate」が選択されていることを確認します。
EmptyDataTemplateボックスにLabelコントロールを配置し
Textプロパティに「該当するデータがありません。<br>抽出条件を指定してから「検索」ボタンをクリックしてください。」を設定します。
ForeColorプロパティをredに設定します。
スマートタグより「テンプレート編集の終了」をクリックします。


■実行して確認します。

ASP.NET GridViewで検索機能を追加~SqlDataSource~

GridViewで一覧表示 ~SqlDataSource~ を修正して検索機能を追加します。

■検索条件指定用のコントロールを配置します。



■SqlDataSorceを修正します。
SqlDataSourceのスマートタグより「データソースの構成」をクリックします。
次へボタンをクリックします。

WHEREボタンをクリックします。

顧客名による抽出条件を指定します。


顧客名カナによる抽出条件を指定します。


並べ替え順序を指定します。



■空データ時のメッセージを作成します。
GridViewのスマートタグより「テンプレートの編集」を選択します。

スマートタグの表示ボックスで「EmptyDataTemplate」が選択されていることを確認します。
EmptyDataTemplateボックスにLabelコントロールを配置し
Textプロパティに「該当するデータがありません。<br>抽出条件を指定してから「検索」ボタンをクリックしてください。」を設定します。
ForeColorプロパティをredに設定します。
スマートタグより「テンプレート編集の終了」をクリックします。

(表示ボックスで選択できる「PageTemplate」はページング機能を利用せずに独自のインターフェイスを定義する場合に使用します。)

■実行して確認します。


ASP.NET GridViewで一覧表示 ~ObjectDataSource(TypedDataSet)~

GridViewで一覧表示 ~ObjectDataSource(DataReader)~ のObjectDataSourceのデータソースを型付DataSetにしてみます。

■型付DataSetを用意します。
新しい項目の追加より「データセット」をApp_Codeフォルダに追加します。
サーバーエクスプローラからCompanyテーブルをドラッグ&ドロップします。

(ビジネスオブジェクトの候補にTableAdapterが表示されないので一度ビルドしておきます。)

■ObjectDataSourceのデータソースを変更します。
ObjectDataSourceのスマートタグより「データソースの構成」をクリックします。
ビジネスオブジェクトに先ほど作成したデータセットのTableAdapterを選択します。

Selectメソッドを選択します。