2006年08月31日

VS2005のDataGridViewは感動もの

最近VB2005でちょっとしたシステムを作り始めた。もちろん仕事でだが、VB.NETと比べて確かに使い勝手が良くなったと思う。
いろんな点で洗練されてきたのを感じる。ちょっとビックリしてしかも感動的なのがコントロールの配置の際に補助線(?)がでてくるところだ。
隣り合うコントロールと位置関係が一目瞭然でバランスよく配置する手助けになる。(下図)

補助線が現われる

レイアウトに関して新しいコンテナコントロールがあり、これまで面倒だったサイズや位置の変更に強力に支援してくれる。ほとんど考える(作り込む)必要がなくなる。

そして今のところ一番感動したのがDataGridViewコントロール。これは従来のDataGridコントロールの進化したものだが、これを使ったサンプルをHPで見つけ試したところあまりの見事さに感動、近くにいた同僚に「見て見て!凄い凄い!」と思わず興奮してもう一度手順を解説してしまったくらいである(^^;。

「特集:.NET Framework 2.0のWindowsフォーム新機能(後編)」
新グリッド・コントロールの豊富な機能と高い表現力


このサンプルはコーディングレスでここまで出来るかという良い見本である。

ただ、ちょっと説明不足のため、どうしても見本の通りできないところがあり、かなり悩んだのでそこを補足してみたい。
下左図が正しい完成画面である。その右の図は最初にHPの手順通りに作ったときのものでDataGridViewの上部が隠れてしまっている。

正しいサンプル 表示がおかしい

これは次のようにして解決した。

ツールバーがDataGridViewの上に被さってしまっているのは、これがToolStripContainerのTopToolStripPanel内に配置されておらずFormに直接配置されていたためである。そのため、一旦ToolStripContainerのDockプロパティをFillからNoneに変更しツールバーから離しておく。次にツールバーのStretchプロパティをFalseにし、Anchorプロパティを全て解除すると移動可能な状態になるのでドラッグ&ドロップでTopToolStripPanelに配置する。(下図)

直しているところ

最後にToolStripContanierのDockプロパティをFillに戻せば修正完了だ。

良い事ばかりではないということも一言書いておく。
開発が便利になった分、統合環境での操作、デザイナーの操作時にバックグラウンドでいろいろ動いているようでやたらと待たされることが多くなった。マシン性能(CPU,メモリ)が一段と要求されるので覚悟してほしい。
posted by なっちゃん at 21:19| 静岡 ?J| Comment(1) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする

2006年08月03日

ASP.NETでJavascriptを外部ファイルにする場合の注意

前回のTipsでjavascriptを扱ったが、これをASP.NETに実装する際、変更が楽なように外部ファイルにしてテストしたところ何故かエラーになった。下図

エラーメッセージ
ランタイムエラーが発生しました。
デバッグしますか?
行:23
エラー:文字が正しくありません。

どうやら日本語のメッセージが原因のようで、文字を変えてみたりするとエラーにならなかったりするのだが、不思議なのは外部ファイルにせず直接ASPXファイルに記述するとそのままでも問題なく動いたことである。となると、外部ファイルの読込み時になにか問題があるようなので、いろいろ調べてみた。そしてファイルの文字コードがShift-JISであることが原因らしいと判った。ASPX自体もShift-JISなのに何でかと思うのだが、ある掲示板に「ASP.NETによるサーバ出力の文字コード体系はUTF-8」と書いてあった。
Web.ConfigにもUTF-8とあるし、以前にも確か同じことで悩んだことも思い出した(^^;

そこで、外部javascriptファイルをUTF-8に変換してみたところ正常に動いた。
(※日本語を使っていなければShift-JISのままでもエラーにはならない)

Shift-JISのファイルをUTF-8に変換するのはメモ帳を使うとよい。
読込み後、「名前を付けて保存」時に文字コードを「ANSI」から「UTF-8」に変更するだけである。(下図)

メモ帳でUTF-8で保存する
posted by なっちゃん at 11:41| 静岡 ????| Comment(2) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2006年08月02日

テキストボックスの入力可能文字数をバイト数で制御するには(Javascript)

データベースを使うアプリケーションではWebアプリにせよWindowsアプリにせよ、テキストボックスに入力した文字列が全て登録されるわけではないことをオペレータ側に伝える必要がある。

その方法として一番判りやすいのは入力中にバイト数を計算して最大値を超えたら警告を出すものだ。
Windowsアプリではそれはプログラム内部で行うので特に問題は無いが、Webアプリではテキストボックス毎にポストバックしてサーバーに処理させていたのではあまりに使い勝手が悪い。クライアント側で制御する必要がある。そこで活躍するのがJavascript。

このサンプルは、テキストボックスの内容をどのタイミング(イベントの発生場所)で判定するかで使い勝手が変わるので、運用状況に合わせて使って欲しい。

関数本体は下の通り。(ソースは画像)
javascript

下の画像をクリックするとサンプルが実行されます。
JavaScriptでテキスト入力のバイト制限

サンプルのinputタグにはmaxlengthの指定は無いが併用するとなお良い。
もとより半角英数しか入力させないのならmaxlengthの指定で十分なのだから。
posted by なっちゃん at 19:43| 静岡 ????| Comment(1) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする