2007年05月10日

Microsoft SQL Server Management Studio Expressではインポート・エクスポートの機能が無い

SQLServer2005 Express Edition はかつてMSDE(Microsoft SQL Server Desktop Engine)と呼ばれていた無償のデータベースソフトの後継で.NET(2.0)対応版であるが、MSDEには無かった管理ツール「Microsoft SQL Server Management Studio Express」が無償でダウンロードして使える。これは大変うれしいものだった。

ところが、やはり無償ということで製品版と違い、いくつかの機能が削られている。その一つがインポート・エクスポート機能である。

開発の途中でそれに気が付き、今更のDeveloperEditionに置き換えるのも面倒なのでManagement StudioだけをDeveloperEditionからインストールすることにした。
何とかインストールできたが、WindowsUpdateを行うとSQLServer2005のServicePack2が適用される。既にExpress版のSP2を適用済みなのだが、ツールだけでも別物と解釈されるらしい。
データベース本体まで影響があるのかと心配したが別に問題なく動いている。
posted by なっちゃん at 10:52| 静岡 ??| Comment(0) | TrackBack(2) | ETC | このブログの読者になる | 更新情報をチェックする

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 | このブログの読者になる | 更新情報をチェックする