画面コードの作成
最後に画面に連結するためのコードをMainForm.vbに記述しましょう。
Class MainWindow Private ViewModel As New MainViewModel Public Sub New() ' この呼び出しはデザイナーで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後で初期化を追加します。 Me.DataContext = Me.ViewModel End Sub End Class
DataGridViewのAutoGenerateColumnsプロパティは、なぜかプロパティウィンドウで設定できませんが、このプロパティをFalseにしておかないと事前に設定したColumnsが無視されてデータが表示されてしまうので注意してください。なお、AutoGenerateColumnsプロパティは逆転の発想で最初はTrueにしておいてどのようなフィールド名でデータが格納しているかを一気に調べることに使うという手もあります。
実行
デフォルトで郵便番号を設定していますので、画面が表示されたら[住所検索]ボタンをクリックしてみてください。
グレープシティ本社の住所が表示できます。
もちろん本来であればWPF用の方を使うのが正しい組み合わせなので、
- 参照設定
- Importsステートメント
- ライセンスファイル
の「GrapeCity.Win.JPAddress.dll」を「GrapeCity.Windows.JPAddress.dll」に変更してWPF用に切り替えておきましょう。
住所の更新
ここまで紹介した機能だけでみると、JPAddressは単なる住所検索コンポーネントでしかありません。もちろん郵便番号だけでなく、地区コードからの検索などまだ紹介していない検索機能もありますが、それ以上にJPAddressがその他の住所検索コンポーネントと違うのは辞書更新サービスの存在です。
JPAddressのUpdateメソッドを使えば、httpを利用してグレープシティ辞書更新サービスサーバーから最新の辞書を取得して辞書データを更新することができるのです。もちろん、Proxyサーバーにも対応しており、IEでインターネットに接続できるように設定してあれば、グレープシティ辞書更新サービスサーバーへの接続もその情報を使って接続可能です。
それでは、Updateメソッドの使い方をみてみましょう。
Imports GrapeCity.Win.JPAddress Imports System.ComponentModel Public Class JPAddressModel Implements INotifyPropertyChanged Private Jpa As New GcJPAddress Public Sub New() Call Update() End Sub Private Sub Update() Jpa.Proxy = System.Net.WebRequest.GetSystemWebProxy() Jpa.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials ' 「vwvyz」には認証IDを設定します。 Jpa.Update("vwvyz ") End Sub : (略) : End Class
このように非常に簡単なコードで実装が可能です。Updateメソッドはダウンロードと辞書更新が完了するまで処理待ち状態になるため、更新中のアプリの挙動についても考慮する必要はありません。
このサービスは年間契約の有償サービスのため利用するには別途申し込みが必要です。ただし、トライアル版では利用できませんが、製品購入後であれば認証IDにプロダクトキーを指定することで90日間のテスト利用ができます。
まとめ
今回のサンプルでは自動的に更新を行っていましたが、承認プロセスをアプリに取り入れ、確認用端末を更新してテスト結果がOKであれば、例えばDBなどに承認OKのフラグを立てて各端末やWebサーバーでUpdateメソッドをアプリの内部で自動的に呼び出すという流れも作ることができます。
住所検索部分であれば、郵便局の郵便番号データダウンロードからデータをダウンロードして使いやすいように加工をしてアプリに組み込めば自作できます。しかし、定期的に更新される郵便番号データダウンロードを毎回使いやすいように加工して配布するという手間を自社要員で実施する必要はないと思います。リソースの最適化という視点やデータ生成結果の品質ということを考えても、複数の取引先にデータ配信しているところにアウトソーシングするのがよいのではないでしょうか。