- PR -

VB .NET でダイアログ表示が・・・

1
投稿者投稿内容
なぼな
ベテラン
会議室デビュー日: 2004/08/04
投稿数: 61
投稿日時: 2006-01-23 16:02
お世話になっております。
表題の件についてご教授お願いします。
ほぼ初心状態ですので、よろしくお願いします。

環境: WinXP
開発: VB .NET 2003

やりたいこと:
  WebForm1  ・・・ メイン画面
  WebForm2  ・・・ ダイアログ(選択画面)

  WebForm1にボタンを配置し、押下イベントで、
  WebForm2をモーダル管理して表示。
  WebForm2で配置したDataGridにて対象データを選択。
  WebForm2のDataGrid選択イベントにて、選択データの取得と
  WebForm2の廃棄(非表示かな)を行うつもり。

  今の状況では、WebForm2のGridでの選択イベントが取得できない
 ため必要データの取得と、画面のクローズができません。さらに、
 新しいブラウザが表示されて、「検索中のページは表示できません。・・・」
  となります。

いろいろ調べた結果、確認ダイアログという考え方は、.NET VBだとないようなので、
VBコードから、JAVAコードのStringを作ってモーダル管理(WebForm1を親にした
WebForm2)で表示しています。
しかし、Javaコードを生成してWebFormを表示すると、VB .NET側ではJavaを実行する
ところまでが処理となり、WebForm2からの帰りイベントが取得できない状況です。
また、WebForm2でのDataGridのイベントも取得できないため、選択のために表示した
画面情報が取得できません。

以下は、VB .NETよりJAVAを呼び出す部分です。
strJScript = "<SCRIPT Language=""Javascript"">" & _
"var rtnVal=showModalDialog('WebForm2.aspx?PROJECT_CODE=" & strProjectCode & "','','dialogWidth:440px; dialogHeight:670px');" & _
"</SCRIPT>"
Me.Controls.Add(New LiteralControl(strJScript))


質問1:
 みなさんは、選択ダイアログをどのように実装されているのでしょうか?
質問2:
 上記方法で実現できそうなものでしょうか?

以上、説明が不足しているかもしれませんがよろしくお願いします。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-01-23 18:06
JavaScript が絡む部分なのでいろいろな実装方法があると思いますが、
僕の場合は次のように実装しています。

WebForm1 : WebForm1 のボタンクリック時に WebForm2 を開く
WebForm2 : 選択された値を WebForm1 のフィールドに書き込む
WebForm2 : WebForm2 を閉じる

引用:

さらに、新しいブラウザが表示されて、
「検索中のページは表示できません。・・・」


これってどのタイミングでおきますか?


引用:

いろいろ調べた結果、確認ダイアログという考え方は、.NET VBだとないようなので


WindowsForm では MessageBox があります
ASP.NET では confirm が確認ダイアログって感じかな

# Java ではありません JavaScript です。
なぼな
ベテラン
会議室デビュー日: 2004/08/04
投稿数: 61
投稿日時: 2006-01-23 18:18
ご教授ありがとうございます。

さっそく確認させていただきます!

その前に下記の部分についてです。
>これってどのタイミングでおきますか?
WebForm2のDataGrid中に配置した行選択用のハイパーリンクのボタンを
クリックすると、DataGridのイベントは何も捕まえることができずに
「検索中のページは表示できません。・・・」
といわれます。
よって、ご教授いただきました、
  「WebForm2 : 選択された値を WebForm1 のフィールドに書き込む」
ができなくてこまっています。

もしかすると開発言語をC#かJ#にしたほうが、開発効率があがるのでしょうか?
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-01-23 18:47
引用:

>これってどのタイミングでおきますか?
WebForm2のDataGrid中に配置した行選択用のハイパーリンクのボタンを
クリックすると、DataGridのイベントは何も捕まえることができずに
「検索中のページは表示できません。・・・」
といわれます。


レンダーされたリンクボタンのリンク先はどういうURLになっていますか?


引用:

もしかすると開発言語をC#かJ#にしたほうが、開発効率があがるのでしょうか?


C#とVB.NETをやっていますが、そう変わらないとおもいますよ
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2006-01-23 22:09
モーダルダイアログは、自画面でポストとかできなかったはずです。
なので、グリッドでの選択時の動作をすべてクライアント側で完結させる
必要があると思います。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2006-01-23 22:37
こんばんは。

引用:

なぼなさんの書き込み (2006-01-23 16:02) より:
いろいろ調べた結果、確認ダイアログという考え方は、.NET VBだとないようなので、


Webアプリの場合最終的な出力はHTMLですから、クライアント側の挙動に関しては
JAVAだとできてVB.NETだとできないってことはまずないです。
#IEだとできてNNだとできない(またはその逆)ってことはありますが。

showModalDialogで開いたaspxがうまくPostBackできない件は下記が参考になるでしょう。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20782&forum=7

引用:

質問1:
 みなさんは、選択ダイアログをどのように実装されているのでしょうか?


私の場合ですが、showModalDialogはIE限定のメソッドなので、
複数ブラウザをサポートするならダイアログを使わず親画面を遷移させます。
#window.openを使ったモーダレスな子画面は、制御がめんどくさいので
#なるべく使いたくない

IE限定の場合は上記URLの方法でPostBackを発生させた後、
hiddenフィールドに親画面に返したい値を埋め込み、
RegisterStartupScriptメソッドを使って
window.returnValue = Form1.Hidden1.value;
を実行させます。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2006-01-24 00:00
おおう、勉強になりました。
なぼな
ベテラン
会議室デビュー日: 2004/08/04
投稿数: 61
投稿日時: 2006-01-26 13:33
まずは、書き込みが遅くなり申し訳ありませんでした。
いろいろ試してみたのと、業務が忙しくなり書き込みの
タイミングを逃していました・・・

皆様、ご教授ありがとうございました!

ご教授いただきましたことをいろいろやってみました。
結果としてはOKだったのですが、動きや表示の状態などを
確認していまいちすっきりできなかった(見た目が)ので、
結局、フレーム内のWebFormをメイン画面とダイアログ画面と
Visibleでコントロールすることにしました。
こちらのがまだ統制がとれているように見えるので・・・
ありがとうございました。大変勉強になりました!

1

スキルアップ/キャリアアップ(JOB@IT)