- - PR -
DataGrid内のボタン列の制御
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-11-27 09:25
c#でwebフォームを作成しています。
DataGrid内のボタン列に削除を配置しているのですが、TabStopでカーソルが当たっている のに気づかずにEnterキーを押してしまいデータが削除されてしまいます。 そこでDataGrid内のボタン列にTabStopがあたらないようにしたいのですがやり方が 解りません。 ご存知の方はお教えください。 また、1クリックで削除できてしまうところが気にいらないのですが、Webフォームなので 削除の確認ボックスを表示させる事ができません。 ユーザーに削除の再確認を促す方法としてはどの様なものが考えられますか? | ||||||||
|
投稿日時: 2002-11-27 19:39
前にも似たような内容のスレッドがありましたが、そのほとんどが
「JAVAスクリプトでダイアログを表示する」という案でした。 しかし、 ・本当に解決できたのか不明 ・JAVAスクリプトは未経験 の理由で私はこの方法を使っていません。 代わりに「削除の確認用のWEBフォーム」を作成し、DataGridがあるページからResponse.Redirectなどで移動します。 このフォームには、 ・削除する/削除しないの2つのボタンを貼り付ける ・「本当に削除しますか?」のようなメッセージを表示 ・削除対象となっているデータを表示 といった内容で、処理は、 ・「削除する」ボタンが押されたら削除処理を実行し、DataGridがあるページに移動 ・「削除しない」ボタンが押されたら何もしないで、DataGridがあるページに移動 とします。 つまり「削除処理のみを独立したWEBフォームに任せる」といったところでしょうか。 このような方法でよろしければ、使って下さい。 | ||||||||
|
投稿日時: 2002-11-28 13:16
yasuさんありがとうございました。
yasuさんの方法でやりたい事は出来るようになりました。 Response.Redirect()を使っていなくて画面の遷移はすべてJAVAスクリプトで やっていましたもので、削除フォームも別ウインドウにJAVAスクリプトで開いていました。 そうしたらDataGridがあるページに戻っても(実際は削除フォームを閉じただけ) リロード機会がないので削除データが残ったままでした。(あたりまえですね(笑)) そこでResponse.Redirect()を使ったらうまくいきました。 ありがとうございました。 ところでDataGridフォームから削除フォームにSQLを作成するためにキーを送らなければ ならないと思いますが、どのようにされていますか? セッション変数ですか? | ||||||||
|
投稿日時: 2002-11-28 16:24
>DataGrid内のボタン列にTabStopがあたらないようにしたいのですがやり方が
>解りません。 Page_Load処理の中で、 //行数分処理 for (int cnt = 0; cnt < dataGrid.Items.Count; cnt++) { //Cells[0]:0列目がボタンの時 ((WebControl)dataGrid.Items[cnt].Cells[0].Controls[0]).TabIndex = -1; } と処理させれば Tab でのフォーカス移動はしなくなります。 厳密には、Controls.Count や Controls[0] が Button(LinkButton) で あるかをチェックする必要があるかと思いますが…。 | ||||||||
|
投稿日時: 2002-11-28 19:24
お役に立てて幸いです。
私も解決案を思い浮かばなかったので、この質問への発言は何もしていませんでした。 Cozyさんありがとうございます。
私はセッション変数を使用しています。 …何だか素っ気ない返事になってしまいました。 | ||||||||
|
投稿日時: 2002-11-28 21:04
tabindex に負の値を設定することは、HTML4 には違反します。 なので、ブラウザによって挙動が違ったとしても文句は言えない、ってことを忘れずに。 f(^^; HTML 4.01 Specification - 17.11.1 Tabbing navigation
| ||||||||
|
投稿日時: 2002-11-29 00:36
biacさん、ご指摘ありがとうございます。
確かに、Netscape 7.0 では動かないです どうしてなの?と思っていたら、こういう規則があるのですね。 実はC#を始めて1ヶ月程なのですが、HTMLの経験が無くてもこんなに簡単に Webフォームが扱えるなんて、なんて便利なんだ、と驚いていました。 しかしここ数日、IE以外のブラウザで動かしてみて愕然としています・・・。 やっぱり、HTMLの基礎をしっかり押さえておかないといけないですね。 ちょっと話が逸れてしまいました。
私もyasuさんと同じく、セッション変数を使用しています。 | ||||||||
|
投稿日時: 2002-11-29 10:35
私もみなさん同様、セッション変数を使っていますが
これを多用した場合のメモリへの影響を心配しています。 開くアドレスに ?Trans=「KEYの内容」 等と付加し、開いたフォームで「KEYの内容」 を取得するという方法も考えられます。 セッション変数を使用したほうが楽でいいとは思うのですが、 メモリーへの影響はどのように考えていますか? あまり考慮しなくてもいいものでしょうか? |
1