2008年06月26日

チェックボックス、ラジオボタンを大きく表示して使う

テキストボックスやコマンドボタンはフォントのサイズや縦(Height)横(Width)を直接指定することで大きく表示することができる。しかし、チェックボックスやラジオボタンは文字の方は大きくできてもコントロールはサイズが変わらない。

年配の方やタッチスクリーンを使っている場合、見やすく操作し易いようにするためにこの部分を大きくできないかという依頼があったとき、正直こんなに苦労するとは思わなかった。

いろいろ試行錯誤した挙句、完成したのがこのサンプルのような使い方である。
サンプルソース:bigctrsamp.lzh (2008.07.03修正)

サンプル実行図
サンプル実行図

サーバーコントロールはWebコントロールではなくHTMLコントロールを使う。Webコントロールではどうしても大きくできない。また、サーバーサイドで利用するため「サーバーコントロールとして実行」を有効にするが、クライアントサイドのJavascriptでGridView内のラジオボタンを操作する方法も組み込んである。

デザイン全体図
デザイン全体

サーバーコントロールとして実行
サーバーコントロールとして実行

サイズを指定
サイズを指定

ラジオボタンのクライアントスクリプトでは一度ブラウザで表示された状態のソースコードで名前を調べる。

GridViewのソースコード
GridViewのソースコード

このソースコードから、ラジオボタンのName属性がGridView2$ctlXX$であることが判る。XXはどういうわけか02から始まる。そこでこれを操作するJavascriptも先頭が02となるように細工をする。

Javascritpコード
Javascriptコード

なお、GridViewの行数をHiddenFieldの値から取得しているが、これは以前のTipsでも紹介した方法「データソースで取得したレコードの件数を知るには」を使っている。
posted by なっちゃん at 18:44| 静岡 ?J| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2008年03月26日

ポップアップブロック回避策

ASP.NETに限らずWebシステムではJavascriptのwindow.open()を使いサブウィンドウを開く場面がよくある。
これがWindowsXP ServicePack2から導入され、Googleツールバーにもあるポップアップブロックによって、効かなくなることがある。それぞれ設定を解除させれば良いが、今回紹介するのは設定解除することなく、回避する方法である。

調べてみると意外に簡単に方法が見つかった。
そもそもポップアップブロックはユーザーが自らの意思でボタンを押したものには働かない。自動で(勝手に)開くウィンドウを阻止するものである。よってサーバーサイドで実行したものは必ずブロックされてしまう。
そこでクライアントサイドのOnClickイベント内で開くように変更すれば良いのである。

例:onclick="window.open('hoge.aspx');return false;"
※最後のreturn falseはonclckイベントを最終的にキャンセルさせることでwindow.open()だけを実行させる意味がある。

ただ、このサーバーサイドからクライアントサイドへの変更には結構問題が起こる。特に入力フォームの内容を取得してからでないと次の処理を決められないときなど一度ポストバックが必要な時がそれにあたる。この点に関しては事前に入力フォームのイベント内でポストバックさせて取得しておくしかない。

サンプルはこちら−>popup.lzh

なおサンプルをテストする場合、開発環境からの実行ではポップアップブロックが無視されるのでIIS等でサイトを立てて実行すること。またURLにlocalhostを使うとローカルイントラネットゾーンとなりこれもポップアップブロックが解除される(但しGoogleツールバーのポップアップブロックは有効)。IPアドレスを指定すればインターネットゾーンになりポップアップブロックが有効になるので、回避の効果が確認できる。

サンプルの実行画面

1.起動画面
上の段がサーバーサイドでのwindow.openでポップアップブロックが掛かってしまう。下の段がその回避策である。
サンプルの起動画面

2.ポップアップブロックが効いた
ポップアップブロックが効いた

3.Googleツールバーのポップアップブロックが効いた
Googleのポップアップブロック

4.ポップアップブロック回避策で無事オープン
回避策
posted by なっちゃん at 17:15| 静岡 ????| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年12月10日

データソースで取得したレコードの件数を知るには

ASP.NETでよく使うGridViewのページング機能では、何ページあるかおおよそ分かっても、全レコード数が幾つあるかは分からない。

そこで全レコード数を取得する必要があるが、そのためだけにデータベースにアクセスするのは避けたい。そこで調べたところ便利な機能があった。

GridViewではSqlDataSourceをバインドしてデータを取得するが、このデータソースのSelectイベントのなかで表示される全レコード数が取得できる。

Dim recCount as Long
Protected Sub SqlDataSource1_Selected(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs)
recCount = e.AffectedRows
End Sub

e.AffectedRows をヘルプで調べると「データベース操作の影響を受けた行の数を取得」とある。
あとは、GridViewのDataBoundイベントのなかで取得した値を表示する処理を追加するだけである。
posted by なっちゃん at 11:56| 静岡 ????| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年09月04日

ASP.NETのログイン画面をスキップさせる(自動ログイン)

ASP.NET2.0のログインコントロールは大変便利である。セキュリティを掛けたページを開こうとすれば自動でログイン画面が表示される。仕組みもブラックボックス化されているのでコントロール(loginコントロール)を貼り付けるだけで済んでしまう。

ところで、最近手がけた仕事でセキュリティは保ちたいがログイン画面で入力するのが面倒だから何とかならないかという相反するリクエストがあった。
普通であれば「その程度の面倒臭さは仕方ありません、我慢してください(^^)」と答えるところだが、ユーザーがパソコン初めての年配の方々の集まりということ(^^;で何とかしましょうということになった。

で、考え出したのが下図のような自動ログインの仕組みである。
ユーザー名とパスワードを引数としてログインページに渡すというもの。
セキュリティ上若干問題があるが、それは仕方ない。優先すべきは「入力しない」ことだから。

自動ログインの仕組み

詳しくはサンプルソースで確認してもらいたい。
ログイン画面はログインコントロールのデザイン部分を利用しているが、ログインコントロールではなく、テキストボックスとボタンコントロールの組み合わせである。認証の部分をプログラムで行っている。といっても複雑ではない。たった2行でOKだ。

サンプルソース:autologin.lzh
※解凍後「サンプルの使い方.html」を参照
posted by なっちゃん at 21:09| 静岡 ????| Comment(0) | TrackBack(1) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年07月25日

DropDownListのAppendDataBoundItemsは問題あり

DropDownListにバインドしたデータとは別に「選択してください」とか「全て」とかいった非バインドデータを追加したいことがある。
この場合の処理で参考書とかによく掲載されているのがAppendDataBoundItemsプロパティを使う方法だ。しかし、実際の現場で使うときに非常に困った現象が起きる場合がある。
今回はその例と回避方法を紹介する。

DropDownListコントロールを単独で使う場合では問題は起きない。
どういう状況で起きるかといえば、データベースのリレーションによる階層(関連)データを絞り込む場合である。
下図サンプルは、OrderテーブルのOrderIDがCustomerIDとEmployeeIDによって絞り込まれる様子である。

1.DropDownListの標準使用では条件にあった件数(この場合は2件)分のデータがリストに追加される。(左DropDownList)

2.AppendDataBoundItemsを有効にした場合、2セット(4件)重複して追加されてしまう。(中央DropDownList)
これはページロード時に、CustomerIDのDropDownListとEmployeeIDのDropDownListにデータがバインドされる度にOrderIDのDropDownListに連動されてバインドが実行され、さらに自分自身がバインドした結果だと思う。

これを回避する方法はいろいろ試した結果、AppendDataBoundItemsプロパティを使わずに
3.Item.InsertメソッドをDataBoundイベントの中で実行する方法である。(右DropDownList)
余分に追加することがないように条件をつけてある。

DropDownListサンプル
※画面は合成したもの


'--上記2の処理--
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
If Not IsPostBack Then
ddlOrder.Items.Clear()
ddlOrder.Items.Add(New ListItem("全て", ""))
ddlOrder.AppendDataBoundItems = True
End If
End Sub
 
'--上記3の処理--
Private Sub ddlOrder2_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles ddlOrder2.DataBound
If ddlOrder2.Items.Count = 0 Or _
(ddlOrder2.Items.Count > 0 AndAlso ddlOrder2.Items(0).Text <> "全て") Then
ddlOrder2.Items.Insert(0, New ListItem("全て", ""))
End If
End Sub
posted by なっちゃん at 13:51| 静岡 ????| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

Web.Config には記述する順番がある

Web.Configには記述の順位が存在する。
普段ほとんど意識しないが、サードパーティのコンポーネントを利用しようとして「appSettings」を追加したら途端にコンパイルエラーになってしまい原因がWeb.Configに追加した場所にあることがわかった。

Web.Configの記述順位
posted by なっちゃん at 13:34| 静岡 ????| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年07月05日

CSV出力時の不具合

GridViewに表示した内容をCSV出力する処理を作っていてちょっと困った現象があったので、それを今回のTipsとして紹介する。

といってもCSV出力自体の方法ではない、出来上がったCSV出力データを開いたり保存したりする時の問題である。

CSV作成完了

上記画面が出た後、「開く」や「保存」を選んでも下図の画面から先に一向に進まないのである。

ダウンロード中

このとき、一度「キャンセル」させて再度実行すると次からは正常に開いたり保存できたりするのだ。
ユーザーに一度キャンセルしてくださいなどと言い訳するわけにもいかないのでいろいろ調べてみたがどうやっても直らない。
そこで、この問題とは関係なくもともとCSV出力時に確認ダイアログをつける予定だった処理を付け加えたところ、何とそれによって問題はあっさり解決した。

その処理は、下図のようにボタンにJavaScriptを追加するものである。

クリックイベントでダイアログ表示

こうすることで出力ボタンを押すと

確認ダイアログ

が表示され、これ以降は正常に処理が進むのである。

ただ、本当の原因は別なところにあるようで、このワンクッションを付けなくても正常に進む場合もあった。
そういうわけで、もし途中で止まるような場面があったらこうしたらというTipsです。
posted by なっちゃん at 14:05| 静岡 ?J| Comment(2) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年06月27日

外部Javascriptでまた同じ過ちを・・・Javascriptのデバッグ方法

以前「ASP.NETでJavascriptを外部ファイルにする場合の注意」というTipsを書いたが、また同じ過ちをしてしまった。

文字コードがUTF-8になっていないためのエラーだった。ただ今度の場合、開発環境のWindowsXPでは正常に動作していたので、ユーザーの運用環境であるWindowsServer2003でエラーをしたときもそれが原因だとは思わなかった。
インターネットで見つけたJavascriptのサンプルを一部修正して使ったのだが案の定Shift-JISで保存されたものだった。一部に日本語が使われていたが、正常に動作してたためそのまま使っていたのだ。
それがWindowsServer2003では読み込み時にエラーして全く使えない状態になり(下図)、

読み込み時エラー発生

そこで初めて問題に気が付いたわけである。しかも自分で書いた以前のTipsのことをすっかり忘れていて数時間無駄に原因を調べていた。が、このときJavascriptのデバックの方法を見つけたのが唯一の収穫でもあった。

Javascriptをデバッグするときこれまで良く使ったのはalert文を使って途中で止めることだった。これだと予想されるバグの発生場所にいくつもalertを書いていかなくてはいけないので結構面倒だった。
それが、次の方法で不要になる。ただしブラウザはIEに限るが。

インターネットオプション−詳細

IEのインターネットオプションの「詳細設定」で上図のように「スクリプトのデバッグを使用しない(Internet Explorer)」のチェックを外す。こうするとエラーの発生した場所(行番号)とエラー内容を表示してくれる。(下図)

Javascriptのデバッグ

エディタ画面にもその外部Javascriptソースが開きカーソルが点滅している。

ともかく外部Javascriptは必ずUTF-8で保存しておこう
posted by なっちゃん at 10:54| 静岡 ??| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年06月21日

消えたテンプレート

いつものように、プロジェクトにWebフォームを追加しようとして「新しい項目の追加」を開いたところ・・・無い!テンプレートから「Webフォーム」が消えている!!(下図)

Webフォームが消えてしまったテンプレート一覧
Webフォームが消えたテンプレート

ここ数日別の作業をしていてフォームの追加はしていなかったが、テンプレートから消えるなんてことは一度も無かった。これじゃ仕事にならんではないか!

怒っても仕方が無いので原因と対策を調べてみたが、マイクロソフトのヘルプ「テンプレートの問題を解決する」では、自作のテンプレートのことを言っているので元々提供されているテンプレートが消えた今回の場合には当てはまらない。

結局、VisualStudio2005を修復セットアップして回復した。よく見るとWebフォーム以外にも(いつの間にか)消えていたらしいテンプレートもあることが分かった。何で消えるのだろう?

きれいに復帰したテンプレート一式
テンプレートが元通りになった
posted by なっちゃん at 20:53| 静岡 ????| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年06月14日

AJAX Control Toolkitの「Calendar」の月が日本語にならないのは

ASP.NET AJAX Control Toolkitの中からCalendarを使ってみた。

月が英語表記になっている

とても便利なのだが、月の表記が英語になってしまう。
サンプルではちゃんと日本語になるのに、自分の作ったページではどういうわけか英語表記になってしまう。

半日ほど調べまわってようやく、サイトのサンプルの下に英語で何やら書いてあるのを見つけた。これによるとページの国別属性Cultureの設定が必要だということ。ページ単位なら@Pageディレクティブにサイト全体ならWeb.Configに設定するようだ。
試しにWeb.Configに設定してみた。

カルチャー設定

でもやっぱり英語表記のままだった(--;
もう一度説明を見るとCulture設定を有効にするには、さらにAJAXのScriptManagerのプロパティ「EnableScriptGlobalization」「EnableScriptLocalization」を有効にする必要があると書かれていた(^^;

ScriptManagerのプロパティ設定

以上の設定をしたところ、やっと日本語表記になった!
しかも曜日も日本語になっている。

月が日本語になっている

※ちなみに、ScriptManagerのプロパティを有効にすれば、Culture設定はあえて記述しなくても日本語表記になることも判った。
posted by なっちゃん at 10:21| 静岡 ?J| Comment(2) | TrackBack(2) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年05月08日

Webアプリケーションの全画面表示と最大化表示

Webアプリケーションはブラウザを使うのでそのままではメニューバー・ツールバー・アドレスバーなどの余分な領域がある。
これを消したほうが画面も広く取れるし、オペレーションとは関係ない操作を未然に防ぐことができる。
これらを消すには一般的にJavascript(window.open)を使うのだが、困ったことに最初の起動時に使えない(消すことができない)。そこでワンクッション(起動用フォームを)入れる必要がある。

サンプル (ソースはこちら->WindowOpen.lzh)

1.起動メニュー
※この起動フォームは全画面と最大化をボタンで選択するが、どちらか一方を固定すればonload時に自動的にメインフォームへ飛ばすことも可能。

起動フォーム

2.全画面表示
全画面表示

3.最大化表示
最大化表示


Javascriptの使い方(全画面・最大化)

1.起動フォーム(Default.aspx)
起動フォームのJavascript

2.メインフォーム(Default2.aspx)
メインフォームのJavascript
続きを読む
posted by なっちゃん at 14:44| 静岡 ?J| Comment(1) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年05月07日

現場で使えるTipsが豊富なASP.NET2.0参考書

ASP.NET2.0 Webアプリケーション開発入門」は、現場で使えるTipsが豊富な参考書で大変重宝した。
特にFormViewの使い方で悩んでいたときに書店で見つけ、DropDownListとGridViewとの連携などデータコントロール(GridView/DetailsView/FormView他)を使った様々な事例をTipsに紹介してくれている。
初心者向けというより、コントロールを使いこなしたい人向けといえる。

注意として、サンプルをダウンロードしてもそのままではエラーして使えなかった。新規プロジェクトでコードを貼り付けたりしていくと動く。(ダウンロードサイトにはその辺の説明があるが、それでも動かなかった)

Tipsの紹介(一例)
・DropDownListの先頭に「選択してください」を表示する
・GridViewの列がNullのとき特定の文字列を表示する
・GridViewのヘッダーを固定してスクロールする
・GridViewの列をフォーマットするときの注意事項
・DetailsViewの区分IDの代わりに区分名を表示するには
・DetailsViewの区分IDの変わりに区分名(DropDownList)を表示するには



ASP.NET 2.0 Webアプリケーション開発入門
ASP.NET 2.0 Webアプリケーション開発入門
葛西 秋雄

関連商品
Microsoft Visual Studio 2005によるWebアプリケーション構築技法
Pocket詳解 ASP.NET辞典
プロが作った!すぐに使える! ASP.NET 2.0 実践サンプル集
10日でおぼえるASP.NET 2.0 入門教室
ひと目でわかるMicrosoft SQL Server 2005
by G-Tools
posted by なっちゃん at 13:39| 静岡 ?J| Comment(0) | TrackBack(1) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

動的にフォルダを作成し、ファイルをアップロード

ファイルアップロードのサンプルはヘルプを含め、いろんなところに掲載されている。でもほとんどが固定されたフォルダにアップするようになっている。
これを任意のフォルダ(と言ってもアクセス可能な)に動的に作成したフォルダへアップしたいときにどうすれば良いか。
ASP.NET以前の旧ASPでWebアプリを作ったときは「FileSystemObject」を使ってサーバー上のドライブやフォルダを操作していた。それが今回使えるかどうか試してみたら、何の問題も無く使えた。同時にASP.NET時代の方法も試してみた。こちらも当然問題無く可能だ。

補足:
このTipsを公開直後、かるあさんから指摘がありましたFileSystemObjectを使った場合のCOM参照の開放を追加しました。
COMオブジェクトの管理についてはMicrosoftのこちらのページを参考にご覧ください。→相互運用機能アセンブリを使った複雑な COM オブジェクトの処理

'フォルダ名に日時を使った文字列を使用
Dim mFolder As String = Format(Now, "yyyyMMdd-HHmmss")

・FileSystemObjectを使ったフォルダ作成
Dim FSO As Object
FSO = Server.CreateObject("Scripting.FileSystemObject")
If FSO.folderExists("C:\Uploads\" & mFolder) = False Then
FSO.createfolder("C:\Uploads\" & mFolder)
End If
FSO = Nothing
KillComObject(FSO) <--- 詳細はサンプルソースを参照
 
・System.IOを使ったフォルダ作成
Dim target As DirectoryInfo = New DirectoryInfo("C:\Uploads\" & mFolder)
If target.Exists = False Then
target.Create()
End If

サンプルはこちら→UploadTest.lzh

注:サンプルはIISでアップロード専用フォルダを仮想ディレクトリとして設定している。これは、Webアプリケーションのコンテンツフォルダとは別ドライブに配置した場合を想定したもの。

サンプル動作画面

1.起動画面
起動画面

2.FileSystemObjectを使ったフォルダ作成によるアップロードFileSystemObjectによるフォルダ作成

3.System.IOを使ったフォルダ作成によるアップロードSystem.IOによるフォルダ作成
posted by なっちゃん at 11:17| 静岡 ?J| Comment(2) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年05月02日

動的コントロールのサンプル(ASP.NET 2.0)

GridViewは大変便利であるが、表形式の入力画面が欲しいときにはやや力不足なところがある。基本的に行単位でしか編集ができないし、任意のセルに自由に移動し入力することができない。

そこでセル毎に一つ一つコントロールを配置していく方法が求められるのだが、固定した行数とは限らないのでどうしても動的に作成したい。しかし動的コントロールの作成は結構面倒で分からない点多い。いろいろ試行錯誤してようやく何とかものになったノウハウをここで紹介したい。実際の業務で使っている仕組みなので参考になると思う。

表(コンテナ)は「Table Web コントロール」を使っている。
これはそもそも動的コントロール用に用意されたと言っても良い代物で、固定の表に使うにはどう考えても無駄でしかない。

サンプルはダウンロードして使えます。→ DynamicTableCreate.lzh
DynamicTableCreate2.lzh (2007.05.18更新)
「ETextBox+Buttonを作成」を追加しました。


動作画面は下図を。

@起動直後の画面:まだコントロールは一つも無い
起動直後

Aテキストを表に出力
テキストを出力

BHyperLinkコントロールを作成
リンクを作成

CTextBoxコントロールを作成
テキストボックスを作成

DButtonコントロールを作成、下はボタンをクリックしたもの
Buttonを作成

クリックイベントを起こしたところ

追加補足
posted by なっちゃん at 19:32| 静岡 ????| Comment(5) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

GridViewのテンプレートにつけたボタンをクリックしたときの行位置を取得するには

GridViewである行を選択すると標準の「選択」ボタンであれば、SelectedIndexChangedイベント内でSelectedRowとして選択行のオブジェクトを取得できる。(下コード)

Dim row As GridViewRow = GridView1.SelectedRow

だが、TemplateFieldとしてイメージボタン等を配置した場合、このボタンをクリックしてもSelectedRowは取得できない。
その場合どうするか。MicrosoftのヘルプにはRowCommandイベントを使って取得する例が載っている。(下リンク)
http://msdn2.microsoft.com/ja-jp/library/system.web.ui.webcontrols.gridview.rowcommand(VS.80).aspx

が、注意すべきはこのイベントだけの手続きでは取得できないことだ。

その下に記載されているRowCreatedイベントとセットになっていることを当初全く考えもしなかったため、いくらやっても取得できず、最後には「ヘルプが間違っている」とまで思っていたのだ(^^;
説明の仕方にも問題があるとは言えないだろうか?

Microsoftのヘルプのサンプルコード(補足)
 
Sub CustomersGridView_RowCreated(ByVal sender As Object, _
ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim addButton As LinkButton = CType(e.Row.Cells(0).Controls(0), LinkButton)
'ここで行番号をセットしておく
addButton.CommandArgument = e.Row.RowIndex.ToString()
End If
End Sub
 
Sub CustomersGridView_RowCommand(ByVal sender As Object, _
ByVal e As GridViewCommandEventArgs)
If e.CommandName = "Add" Then
'セットしておいた行番号を取得
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = CustomersGridView.Rows(index)
Dim item As New ListItem()
item.Text = Server.HtmlDecode(row.Cells(2).Text)
If Not CustomersListBox.Items.Contains(item) Then
CustomersListBox.Items.Add(item)
End If
End If
End Sub
posted by なっちゃん at 17:19| 静岡 ????| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年04月26日

ASP.NET Ajax を導入後、既存のWebアプリをAjax対応にする場合の注意

Web.Configに以下の箇所を追加しないと、エラー「'Sys'は宣言されていません」が出る。

1.configSections セクション丸ごと
2.system.web セクション内
 ・pages内のcontrols
 ・httpHandlers
 ・httpModules
3.system.webServer セクション丸ごと

実際の内容は、新規プロジェクトでASP.NET AJAX-Enabled Web Applicationを作成した時のWeb.Configを参照するとよい。
posted by なっちゃん at 11:11| 静岡 ?J| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年04月25日

些細なことだけど、操作性が良くなる設定

ASP.NET2.0の開発をするとき、VS2005の初期設定ではちょっと煩わしい操作上の問題がある。

それは、ソース(フォーム)にコードを貼り付けをしようとしてマウスでその箇所をクリックすると、タグが強調表示されて文字列が右方向にズレてしまう。そのため右クリックしてメニューを表示するタイミングで貼り付け位置が当初の予定より左にズレでしまい、変なところにコードが貼り付いてしまうのだ。最初のクリックを省いて右クリックだけ行えば良いのだが、癖でついクリックしてしまうので厄介なのである。

1.タグが強調表示されて・・・
タグが強調表示されて・・・

2.貼り付けたコードがズレた!
貼り付けたコードがズレた!

タグの強調表示はあまりメリットが無いので、この機能を止めてしまうにはどうすれば良いのか探してみたところ下図のところのチェックを外せば良いことが分かった。

3.「区切り記号を自動強調表示する」を解除
強調表示を解除
posted by なっちゃん at 10:35| 静岡 ?J| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年03月20日

ASP.NET 2.0 で動的にコントロールを作成する方法

Microsoftのサポートオンラインには「Visual Basic .NET を使用して ASP.NET で動的にコントロールを作成する方法」というサンプルがある。これはASP.NETの1.0/1.1のためのものであるが、2.0ではどうしたらいいのかと思って試しにやってみたところ、ほとんど利用可能であることがわかった。2.0で動かすには、余分に追加するのではなく、不要な箇所を除くだけである。

オリジナルはMicrosoftのサイトを見てもらうとして、ASP.NET2.0のソースを用意したので必要な方はご覧ください。

ダウンロード→Default.lzh


その後、「ASP.NET Webページにコントロールをプログラムによって追加する」というページを見つけた。さらに、「Table Web サーバー コントロールに行およびセルを動的に追加する」もあった。
いずれもASP.NET2.0のサンプルなので、こちらの方がより参考になると思う。
posted by なっちゃん at 10:32| 静岡 ????| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2007年02月28日

ASP.NET2.0+AJAXは使える!

Ajaxについては以前から興味があったが、なかなか使う機会がなかった。
先月Microsoftが「ASP.NET 2.0 AJAX Extensions 1.0」を公開してようやく実際に仕事(業務)で使える状態になった。

サンプルを動かしてみてその使い勝手の良さに感心した。これからのASP.NETでは必須のツールになることは間違いないだろう。
WebアプリにWindowsアプリ(リッチクライアント)の操作性を提供するのだから、一度でも使ったら元に戻る気には到底なれないと思う。しかもこれはフレームワークでの提供なので誰でも簡単に使える。まだ詳細に使ってみた訳ではないので本当の使い勝手は未知数だが試してみる価値は大いにあろう。

ASP.NET AJAXを勉強するなら山田祥寛氏とWINGSプロジェクトのものがいい。
1.「マイクロソフトのAjax対応フレームワーク「Atlas」入門」
※AtlasというのはASP.NET 2.0 AJAX Extensionsの開発コード名
http://itpro.nikkeibp.co.jp/article/COLUMN/20061110/253333/
2.「触ってみようASP.NET 2.0 AJAX Extensions 」
http://codezine.jp/a/article/aid/799.aspx

山田氏のAjax入門書はASP.NET以外にJava,PHPも解説している。

サーバサイドAjax入門 Java/PHP/ASP.NET連携でAjaxプログラミングを極める!
サーバサイドAjax入門 Java/PHP/ASP.NET連携でAjaxプログラミングを極める!
山田 祥寛

関連商品
Ajaxハッカーズ・プログラミング―基礎からprototype.js、Yahoo!UIライブラリ、HTML_AJAXの活用までWebアプリケーション制作のプログラミング・テクニック
Ajaxイン・アクション
Ajax 実装のための基礎テクニック
実例で学ぶ! [入門と実践] Ajax+XML [CD-ROM付き]
AJAX Webアプリケーション アイデアブック
by G-Tools
posted by なっちゃん at 19:44| 静岡 ????| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2006年11月30日

ASP.NET 2.0 のベスト参考書

VisualStudio2005によるASP.NET 2.0での開発が始まった。
そこで、手っ取り早くASP.NET(1.1)との違いを知り、新しく追加されたコントロールを覚えるために使った参考書が山田祥寛氏の著作「10日でおぼえるASP.NET2.0入門教室」である。
山田氏の著作は、その判り易さとサンプルの実用性の高さでこれまでにもJava開発で大いに活用させてもらった。今回の本もその有用性は抜群である。(入門編とあなどる無かれ、ASP.NET2.0の技術仕様を解説でしっかり説明している。ここが他の類似参考書と一線を画す山田氏の著書の優れたところだ)
ファイルアップロードのサンプルは実際の開発で必要なものだったし、マスターページとコンテンツページの使い方、メニューの活用からデータベースの扱いまでほとんど全てが使える代物で、大助かりこの上ない!さすがMicrosoft ASP.NET MVPである。

なお、実際にこの本で学習するときにはサンプルコードをWebサイトからダウンロードしてからだが、サンプルがHTMLとプログラムが一体となった「コードインライン」モデルで既に作成済みなので、学習用には「コードビハインド」モデルを使って別名で新規作成しながら行うといいと思う。サンプルがHello.aspxであれば、Hello2.aspxとして作るといった具合である。実際の開発現場ではコードインラインモデルで作ることはまずありえないので。

10日でおぼえるASP.NET 2.0 入門教室
10日でおぼえるASP.NET 2.0 入門教室山田 祥寛

翔泳社 2006-08-03
売り上げランキング : 3666

Amazonで詳しく見る
by G-Tools

関連商品
Pocket詳解 ASP.NET辞典
プロが作った!すぐに使える! ASP.NET 2.0 実践サンプル集
Microsoft Visual Studio 2005によるWebアプリケーション構築技法
プログラミング Microsoft ASP.NET 2.0
ひと目でわかるMicrosoft SQL Server 2005
posted by なっちゃん at 09:52| 静岡 ????| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする