- PR -

DataGrid内のHTMLボタンのClickイベント取得について

投稿者投稿内容
ババンギダ
会議室デビュー日: 2005/09/01
投稿数: 12
投稿日時: 2005-10-03 10:23
いつも参考にさせて頂いております。

Webアプリなんですが、DataGridのテンプレート列にHTMLコントロールのボタンを置いてます。
このボタンのClickイベントをサーバー側で取得したいのですがDataGridのItemCommandでも取得できません。
どうしたらClickイベントを取れるのでしょうか?

すごく初歩的なことを聞いてしまって申し訳ないのですが、ご存知の方がおられましたらご教授お願いします。
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-10-03 10:35
HTMLコントロールのボタンは、クライアントサイドでのみ動作するので、サーバサイドではイベントを拾えません。
通常であればButtonColumnを使用すると思われますが、何か使用できない理由等があるのでしょうか?

※とりあえず
.NET TIPS[ASP.NET]DataGridコントロールの列にボタンを表示するには?
ババンギダ
会議室デビュー日: 2005/09/01
投稿数: 12
投稿日時: 2005-10-03 11:45
でっち6号さん返信ありがとうございます。

引用:

HTMLコントロールのボタンは、クライアントサイドでのみ動作するので、サーバサイドではイベントを拾えません。
通常であればButtonColumnを使用すると思われますが、何か使用できない理由等があるのでしょうか?



理由としては、Enterキーでカーソル移動の制御を行っているので、
Webコントロールを置くとEnterキー押下時にPostBackが走ってしまうのが嫌なんです。
例えばボタンのOnclik処理でサーバーサイドの処理を流すことは出来ないのでしょうか?
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-10-03 12:14
こんにちは。SE卵です。

> 理由としては、Enterキーでカーソル移動の制御を行っているので、
> Webコントロールを置くとEnterキー押下時にPostBackが走ってしまうのが嫌なんです。
> 例えばボタンのOnclik処理でサーバーサイドの処理を流すことは出来ないのでしょうか?

HTMLコントロールでサーバーがわの処理を動かす。。。出来るのかな?

それより逆の発想で、WEBコントロールのボタンを使用して、Enterキー押下時に
ボタンの上でEnterキーを押下だったら、PostBackしないというようにしてやれば
いいのでは?クライアント側で以下スクリプトで判断可能。
コード:
JavaScript
if (event.keyCode == 13){
    if (window.event.srcElement.type != 'submit'){"
        return false;
    } else {
        return true;
    }
}


ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-10-03 12:14
ぼのぼのです。

一番簡単なのはButtonTypeをLinkButtonにすることでしょう。

他の方法として、Enterキーでカーソル移動の制御ってのは
javascriptで行っているんだと思いますが、
そこでkeyCodeがEnterキーだったらreturn falseする、とか。

実は無理矢理HtmlButtonを使う方法もあるんですが、
上述の方法の方が簡単だと思いますよ

----
おっとかぶった(^^;

>SE卵さん
Enterキー押下でSubmitされるのが嫌って言ってるんで、
srcElementはボタンじゃなくてテキストボックスとかだと思います。

[ メッセージ編集済み 編集者: ぼのぼの 編集日時 2005-10-03 12:22 ]
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-10-03 12:34
HtmlButton.ServerClick はどうですか?
ババンギダ
会議室デビュー日: 2005/09/01
投稿数: 12
投稿日時: 2005-10-03 13:36
SE卵さん。
ぼのぼのさん。
にしざきさん。
返信ありがとうございます。

引用:

ボタンの上でEnterキーを押下だったら、PostBackしないというようにしてやれば
いいのでは?クライアント側で以下スクリプトで判断可能。


ということですが、EnterキーでPostBackしないというようにしたいのは
DataGrid以外のコントロールにカーソルが入ってる時なんですよ。
画面上にあるのはButtonとTextBoxとDropDownListです。

引用:

HtmlButton.ServerClick はどうですか?


これは無理でした…。

引用:

実は無理矢理HtmlButtonを使う方法もあるんですが、
上述の方法の方が簡単だと思いますよ


もしよろしかったら上記の方法をご教授願えませんでしょうか?
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-10-03 14:05
引用:

ババンギダさんの書き込み (2005-10-03 13:36) より:
引用:

実は無理矢理HtmlButtonを使う方法もあるんですが、
上述の方法の方が簡単だと思いますよ


もしよろしかったら上記の方法をご教授願えませんでしょうか?


個人的にあまり推奨できる方法ではないので先に別案を。
以下のようなjavascriptを試してみてください。

コード:

document.onkeydown = func1;
function func1()
{
    if(event.keyCode == 13 && event.srcElement != null && event.srcElement.type == "text")
        return false;
}


IE用のコードなので、Netscapeも対応する場合はもうひと工夫必要です。
そっちは、自分で調べてください。

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