2007年10月30日火曜日

.NET(Mobile) OracleLite10gメモ

■WindowsPCよりDBを作成するには
・コマンドプロンプトより
createdb POLite DatabaseName password

・プログラムからは
Public Shared Sub CreateDb() 

    Dim fileName As String = "<ORACLE_HOME>\Mobile\Sdk\bin\CreateDb"

   Dim args As String = "POLite DatabaseName password"

    Dim process As System.Diagnostics.Process

    process = System.Diagnostics.Process.Start(fileName, args)

    process.WaitForExit()

End Sub


■WindowsPCより接続を確認するには
・コマンドプロンプトより
msql system/password@JDBC:POLite:DatabaseName


■DBを削除するには
・コマンドプロンプトより
createdb POLite DatabaseName password

・プログラムより
Public Shared Sub RemoveDb()

        Dim fileName As String = "<ORACLE_HOME>\Mobile\Sdk\bin\RemoveDb"

        Dim args As String ="POLite DatabaseNmae"

        Dim process As System.Diagnostics.Process

        process = System.Diagnostics.Process.Start(fileName, args)

        process.WaitForExit()

End Sub


■DBに表を作成するには
・コマンドプロンプトより
msqlで接続後「Create Tabele」SQL文を流す
又はmsqlで接続後にsqlファイルを指定する。(Poldemo.sqlはデモ用テーブル)
SQL> @<ORACLE_HOME>Mobile\DBS\Poldemo.sql

・プログラムより
Public Shared Sub CreateTable(sqlFilePath as string)

        Dim filename As String = "<ORACLE_HOME>Mobile\Sdk\bin\msql"

        Dim args As String = "system/password@jdbc:POLite:DatabaseName @" & sqlFilePath

        Dim process As System.Diagnostics.Process

        process = System.Diagnostics.Process.Start(filename, args)

        process.WaitForExit()

        process.Close()

End Sub

2007年10月16日火曜日

silverlightデモ

http://www.telerik.com/demos/aspnet/silverlight/Cube/Examples/RoomDesigner/DefaultCS.aspx

ソファや照明などをクリックしてみてください。


他にもいろいろあります。
http://silverlight.net/Showcase/

Silverlightのプラグインはここからダウンロードしてインストールしてください。
Silverlight

MSDNオフラインセミナー 次世代Webに向けたユーザー体験の開発 in 大阪

昨日は
MSDNオフラインセミナー 次世代Webに向けたユーザー体験の開発 in 大阪 
に参加してまいりました。

いや~面白かったです。
今回のセミナーはASP.NET AJAXとSilverlightについての話がメインでした。
Ajaxについては業務で使用する必要が出てくるだろうと、いろいろ勉強していたので知っている内容ばかりでした。
が、SilverlightとWPFについては業務で使用することは(たぶん)ないので知識としては知っていても、今まで関連サイトなどは深く読まずにスルーしてました。
でも実際にデモを見て

面白そうっ!!


ExpressionStudio欲しいなぁ。
ExpressionStudioがないとしんどいだろうなぁ~
業務で使用しないから買ってもらえないだろうなぁ~
なんとか業務で使える方向があればなぁ~
デザイン部分だけとなると苦しいよなぁ~

あとLINQについても少しデモがありました。
LINQについては軽く知ってはいたのですが・・・こちらも関連サイトなどは深く読まずにスルーしてました・・・orz
実際デモをみて

おぉ~!!

TableAdapterとか型付DataSetとかはどうなるのでしょうか?

とりあえず早速VisualStudio2008 Beta2インストールしてみま~す!!

.NET(Mobile) .NET(Webサービス) Webサービスでファイルの受け渡し

Webサービスを使用して、モバイルデバイスとPCでファイルを受け渡しするサンプル

サーバー側
    ''' <summary>
    ''' クライアントへファイルを送出する
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    <WebMethod()> _
    Public Function GetFile() As Byte()
        Dim filePath As String = "E:\Webサービステスト\GetFile\testdb.odb"
        Using fs As New System.IO.FileStream(filePath, IO.FileMode.Open)
            Dim ret(fs.Length) As Byte
            fs.Read(ret, 0, ret.Length)
            Return ret
        End Using
    End Function

    ''' <summary>
    ''' クライアントからファイルを受け取る
    ''' </summary>
    ''' <param name="file"></param>
    ''' <remarks></remarks>
    <WebMethod()> _
    Public Sub PutFile(ByVal file As Byte())
        Dim filePath As String = "E:\Webサービステスト\PutFile\testdb.odb"

        Using fs As New System.IO.FileStream(filePath, IO.FileMode.Create)
            fs.Write(file, 0, file.Length)
        End Using
    End Sub


クライアント側
Public Class Form1


    Private Const WebServiceUrl As String = "http://IPアドレス/WebService/Service.asmx"
  
    Private Sub cmdGetFile_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) _
    Handles cmdGetFile.Click
       
        Dim filePath As String = "ファイルパス"
        Dim CallWebService As New WebReference.Service
        CallWebService.Url = WebServiceUrl
        Dim file() As Byte
        file = CallWebService.GetFile()
        Using fs As New System.IO.FileStream(filePath, IO.FileMode.Create)
            fs.Write(file, 0, file.Length)
        End Using
    End Sub
    Private Sub cmdPutFile_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) _
    Handles cmdPutFile.Click
        
        Dim filePath As String = "ファイルパス"
        Dim CallWebService As New WebReference.Service
        CallWebService.Url = WebServiceUrl
        Using fs As New System.IO.FileStream(filePath, IO.FileMode.Open)
            Dim file(CInt(fs.Length)) As Byte
            fs.Read(file, 0, file.Length)
            Call CallWebService.PutFile(file)
        End Using
    End Sub
End Class

2007年10月11日木曜日

雑記 ASP.NET AJAXプログラミング ~Windows標準AJAXフレームワークによるリッチクライアント開発手法~

ASP.NET AJAXプログラミング ~Windows標準AJAXフレームワークによるリッチクライアント開発手法~ (単行本(ソフトカバー))
山田 祥寛 (著)
価格: ¥ 3,780 (税込)
Amazon




Ajaxに興味があったので買ってみました。
丁寧に説明されています。
でもJavaScript嫌いなんですよね。デバッグしにくいし。
Ajaxもどうしても必要な場合のみの使用になるでしょう・・・。

2007年10月1日月曜日

ASP.NET AJAX Control Toolのインストール

http://www.asp.net/ajax/よりASP.NET AJAX Control Toolkitをダウンロードします。



ダウンロードしたAjaxControlToolkit.zipを解凍するといくつかのフォルダが展開されます。
AjaxControlExtenderフォルダ内のAjaxControlExtender.vsiをダブルクリックします。
(ControlToolkitは必要なファイルをアプリケーションに配置するだけで利用できますので、以下の作業は必ず必要なものではありません。以下の作業によりテンプレートを用意することで後々楽に作業ができます。)


「VisualStudioコンテンツインストーラ」ダイアログで、インストールするテンプレートの種類を選択します。(不要なテンプレートをインストール対象から外すことも可能ですが、デフォルトのままでもOK)

ここで「署名が見つかりません」ダイアログが表示された場合には、そのまま「はい」をクリックしてください。

以上でインストールは完了です。

■ControlToolkitのコントロールをツールボックスに追加します。
VS2005を起動しツールボックスに「ControlToolkit」タブを追加します。
「ControlToolkit」タブを右クリックし、「アイテムの選択」より「ツールボックス アイテムの選択」ダイアログを表示します。参照ボタンより先ほどダウンロードし展開したフォルダより
「AjaxControlToolkit\SampleWebSite\Bin\AjaxControlToolkit.dll」を追加します。ControlToolkitで提供されているサーバーコントロールがチェックが入った状態で追加されますので「OK」でツールボックスに追加してください。

2007年9月20日木曜日

.NET(Webサービス) Webサービス

VisualStudioを起動し新しいWebサイトを作成します。
「Visual Studioにインストールされたテンプレート」より「ASP.NET Webサービス」を選択します。


作成されたWebサイトには、App_Codeフォルダ配下に「Service.vb」が用意されています。
Service.vbには「HelloWorld」メソッドが用意されています。


作成したWebサービスをIIS上で動作するよう設定します。
「コントロールパネル」→「管理ツール」→「インターネットインフォーメーションサービス」を起動します。
「Webサイト」-「既定のWebサイト」を開き、「既定のWebサイト」の右クリックメニューより「新規作成」-「仮想ディレクトリ」を選択します。
「仮想ディレクトリの作成ウイザード」が起動します。
「エイリアス」に"WebService"と入力します。


「ディレクトリ」に先ほど作成したWebサイトのパスを指定します。


Webサービスの動作確認を行います。
http://localhost/WebService/Service.asmxにアクセスし下記ページが表示されればOKです。


次にWebサービスの呼び出し側のプログラムとしてWindowsアプリケーションを作成します。
作成したWindowsアプリケーションプロジェクトに「Web参照の追加」を行います。


URLにはhttp://localhost/WebService/Service.asmxを指定します。


FormにButtonを一つとLabelを一つ配置します。
ButtonのClickイベントに下記コードを記述します。
Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) _

Handles Button1.Click

    Dim CallWebService As New localhost.Service

    Dim sResult As String = CallWebService.HelloWorld

    Me.Label1.Text = sResult

End Sub


実行してみます。
Button1をクリックするとLabelに「Hello World」が表示されます。

ASP.NET AJAX Extensions1.0をインストール

ASP.NET2.0 AJAX Extensions1.0はASP.NET AJAXの基本的な機能を提供するパッケージです。ASP.NET AJAX Control Toolkitをインストールする場合にも必ずAJAX Extensions1.0を先にインストールしておく必要があります。

http://www.asp.net/ajax/ よりASP.NET AJAXをダウンロードします。






ダウンロードしたファイルを実行します。








VisualStudioを起動し新しいWebサイトを作成を実行するとテンプレート一覧に「ASP.NET AJAX-Enabled Web Site」が追加されています。

はじめてのASP.NET開発

今回は急遽ASP.NETで開発をすることになりました。
最初は以前ASP.NETで作成されたプロジェクトがあまりに汚く、バグがでているのでキレイにして欲しいという依頼でした。
どれだけ汚いんだろうとコードを見てみると、想像以上の汚でした。
それでも最初は改修しながらなんとかキレイにしようとがんばったんですが・・・お手上げ。絶対作り直すほうが早い!!

ASP.NETは今まで勉強していましたが開発経験はありません。
今回のプロジェクトは規模も小さいし納期も融通が効くらしいので勉強がてら調度いい。

作り直し以外は断固拒否し、結局作り直すことになったのですが、楽しかったですぅ。本当にいろいろ勉強になりました。
参考書片手にプログラムを作るのと実開発では学習スピードが全然違いますね~。
勉強しながらお給料がもらえるなんてすごく得した気分ですぅ。

でも
目も当てられないプロジェクトを担当した張本人が、自分でも汚いと自覚して作り直す事にしたのに「ココはこうした方がよいのでは?」とか言ってくる。

お前に言われたかないヤイっ

しかも間違ってるし。
嫌味たっぷりに「そのこだわりが1回目の開発に生かされていないのはナゼですか?」と質問しました。
「だってぇ・・・(ごにょごにょ)あんまりよく知らなかったし」

はぁ?もう少し勉強してください。

っていうか

勉強してから開発してください。

この人いつも「行き当たりばったり開発」です。

ASP.NET Tableタグのスタイルシートを動的に変更

デザイナでTABLEを選択し右クリックメニューより「サーバーコントロールとして実行」をチェックONにし,
HtmlTableサーバーコントロールに変更します。

ページにはテーマによってスタイルシートが読み込まれているものとします。
Dim table As HtmlTable = DirectCast(page.FindControl("TABLE1"), HtmlTable)
table.Attributes("Class") = "table1"
table.Rows(0).Attributes("Class") = "th1"

2007年9月16日日曜日

ASP.NET GridViewのTemplateFieldに配置したボタンのクリックイベント

「電話番号を表示」ボタンをクリックしたとき、選択した行の電話番号をグリッド下部のLabelコントロールに表示します。


TemplateFieldに「電話番号を表示」Buttonコントロールを配置します。


    Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) _

    Handles Me.Load

        If Not IsPostBack Then

            Dim dt As New DataTable

            dt.Columns.Add("CustomerID"GetType(String))

            dt.Columns.Add("CustomerNm"GetType(String))

            dt.Columns.Add("TEL"GetType(String))


 

            Dim row As DataRow

            For i As Integer = 1 To 10

                row = dt.NewRow

                row("CustomerID") = i.ToString

                row("CustomerNm") = "会社名" & i.ToString

                row("TEL") = i & i & i & "-" & i & i & i & i & "-" & i & i & i & i
 

                dt.Rows.Add(row)

            Next


 

            Me.GridView1.DataSource = dt

            Me.GridView1.DataBind()

        End If

    End Sub


 

    Protected Sub GridView1_RowDataBound(ByVal sender As ObjectByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _

    Handles GridView1.RowDataBound

        If e.Row.RowType = DataControlRowType.DataRow Then


 

            Dim rowData As DataRowView = DirectCast(e.Row.DataItem, DataRowView)


 

            Dim btnShowTel As Button

            btnShowTel = DirectCast(e.Row.FindControl("btnShowTel"), Button)


 

            'ここでRowCommandで必要なデータを設定しておきます。

            btnShowTel.CommandName = "btnShowTel"

            btnShowTel.CommandArgument = rowData("TEL").ToString


 

        End If

    End Sub


 

    Protected Sub GridView1_RowCommand(ByVal sender As ObjectByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) _

    Handles GridView1.RowCommand

        'RowDataBoundで設定したCommandName、CommandArgumentを使用して、ラベルに電話番号を表示します。

        If e.CommandName = "btnShowTel" Then

            Dim tel As String = e.CommandArgument.ToString

            Me.lblTel.Text = tel

        End If

    End Sub

ASP.NET GridViewの文字列をクリックしてポップアップを表示する

GridViewのセルをクリックしてポップアップを表示する とよく似ていますが、セルに表示されている「文字列」をクリックしてポップアップを表示します。



CompnyNm列をTemplateFieldにし、LinkButtonコントロールを配置します。


<script type="text/javascript" >

function ShowPopup(str)    
{   
        var w = 150;
        var h = 100;
        var x = (screen.width  - w) / 2;
        var y = (screen.height - h) / 2;
        ChildWindow = window.open('Default2.aspx?TEL=' + str ,"", "width=" + w + ",height=" + h + ",top=" + y + ",left=" + x + ",dependent=yes,location=no,menubar=no,resizable=yes,scrollbars=no,status=no,titlebar=no,toolbar=no"); 

</script>


Imports System.Data



Partial Class _Default

    Inherits System.Web.UI.Page



    Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) _

    Handles Me.Load

        If Not IsPostBack Then

            Dim dt As New DataTable

            dt.Columns.Add("CustomerID"GetType(String))

            dt.Columns.Add("CustomerNm"GetType(String))

            dt.Columns.Add("TEL"GetType(String))



            Dim row As DataRow

            For i As Integer = 1 To 10

                row = dt.NewRow

                row("CustomerID") = i.ToString

                row("CustomerNm") = "会社名" & i.ToString

                row("TEL") = i & i & i & "-" & i & i & i & i & "-" & i & i & i & i

                dt.Rows.Add(row)

            Next



            Me.GridView1.DataSource = dt

            Me.GridView1.DataBind()

        End If

    End Sub


 

    Protected Sub GridView1_RowDataBound(ByVal sender As ObjectByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _

    Handles GridView1.RowDataBound

        If e.Row.RowType = DataControlRowType.DataRow Then



            Dim lbtnCustomerNm As LinkButton

            lbtnCustomerNm = DirectCast(e.Row.FindControl("lbtnCustomerNm"), LinkButton)



            Dim rowData As DataRowView = DirectCast(e.Row.DataItem, DataRowView)

            lbtnCustomerNm.OnClientClick = String.Format("ShowPopup('{0}');", rowData("Tel").ToString)

            '又は

            'lbtnCustomerNm.Attributes.Add("OnClick", String.Format("ShowPopup('{0}');", rowData("Tel").ToString))



        End If

    End Sub

ASP.NET GridViewのセルをクリックしてポップアップを表示する

GridViewの「セル」をクリックしてポップアップ画面を表示します。
表示している「文字列」ではありません。



<script type="text/javascript" >

function ShowPopup(str)    
{   
        var w = 150;
        var h = 100;
        var x = (screen.width  - w) / 2;
        var y = (screen.height - h) / 2;
        ChildWindow = window.open('Default2.aspx?TEL=' + str ,"", "width=" + w + ",height=" + h + ",top=" + y + ",left=" + x + ",dependent=yes,location=no,menubar=no,resizable=yes,scrollbars=no,status=no,titlebar=no,toolbar=no"); 

</script>


Imports System.Data



Partial Class _Default

    Inherits System.Web.UI.Page



    Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) _

    Handles Me.Load

        If Not IsPostBack Then

            Dim dt As New DataTable

            dt.Columns.Add("CustomerID"GetType(String))

            dt.Columns.Add("CustomerNm"GetType(String))

            dt.Columns.Add("TEL"GetType(String))



            Dim row As DataRow

            For i As Integer = 1 To 10

                row = dt.NewRow

                row("CustomerID") = i.ToString

                row("CustomerNm") = "会社名" & i.ToString

                row("TEL") = i & i & i & "-" & i & i & i & i & "-" & i & i & i & i

                dt.Rows.Add(row)

            Next



            Me.GridView1.DataSource = dt

            Me.GridView1.DataBind()

        End If

    End Sub


 

    Protected Sub GridView1_RowDataBound(ByVal sender As ObjectByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _

    Handles GridView1.RowDataBound

        If e.Row.RowType = DataControlRowType.DataRow Then

            Dim rowData As DataRowView = DirectCast(e.Row.DataItem, DataRowView)

            e.Row.Cells(1).Attributes.Add("OnClick"String.Format("ShowPopup('{0}');", rowData("Tel").ToString))

        End If

    End Sub

ASP.NET GridViewにToolTipを表示する。




Imports System.Data



Partial Class _Default

    Inherits System.Web.UI.Page



    Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) _

    Handles Me.Load

        If Not IsPostBack Then

            Dim dt As New DataTable

            dt.Columns.Add("CustomerID"GetType(String))

            dt.Columns.Add("CustomerNm"GetType(String))

            dt.Columns.Add("TEL"GetType(String))



            Dim row As DataRow

            For i As Integer = 1 To 10

                row = dt.NewRow

                row("CustomerID") = i.ToString

                row("CustomerNm") = "会社名" & i.ToString

                row("TEL") = i & i & i & "-" & i & i & i & i & "-" & i & i & i & i

                dt.Rows.Add(row)

            Next



            Me.GridView1.DataSource = dt

            Me.GridView1.DataBind()

        End If

    End Sub


 

    Protected Sub GridView1_RowDataBound(ByVal sender As ObjectByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _

    Handles GridView1.RowDataBound

        If e.Row.RowType = DataControlRowType.DataRow Then

            Dim rowData As DataRowView = DirectCast(e.Row.DataItem, DataRowView)

            e.Row.Cells(1).Attributes.Add("Title", rowData("Tel").ToString)

        End If

    End Sub

ASP.NET GridViewに表示する書式を設定する

GridViewに表示する書式を設定するには列のDataFormatStringプロパティに書式を設定します。
その際HtmlEncodeプロパティをFalseに設定する必要があります。

2007年9月1日土曜日

ASP.NET マスターページのContentPlaceHolder内に配置したコントロールにアクセスするには

マスターページを使用したページでContentPlaceHolder内に配置したコントロールにアクセスするには

'まずページのマスターページからコンテンツを探します。

Dim content As ContentPlaceHolder

content =DirectCast(me.Master.FindControl("ContentPlaceHolder1"),ContentPlaceHolder)

            

'コンテンツからコンテンツに配置したコントロールを探します。

Dim text As TextBox = DirectCast(content.FindControl("TextBox1"),TextBox)

2007年8月21日火曜日

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に設定します。
スマートタグより「テンプレート編集の終了」をクリックします。


■実行して確認します。