■データアクセスクラスを修正します。
「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.Select, True)> _
Public Shared Function GetCompanyData(ByVal companyName As String, ByVal companyKana As String) As 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(1) As 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
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.Select, True)> _
Public Shared Function GetCompanyData(ByVal companyName As String, ByVal companyKana As String) As 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(1) As 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に設定します。
スマートタグより「テンプレート編集の終了」をクリックします。
■実行して確認します。
0 件のコメント:
コメントを投稿