- PR -

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

投稿者投稿内容
ババンギダ
会議室デビュー日: 2005/09/01
投稿数: 12
投稿日時: 2005-10-03 16:52
返信が遅くなりました。
ぼのぼのさん返信ありがとうございます。
引用:

ぼのぼのさんの書き込み (2005-10-03 14:05) より:
個人的にあまり推奨できる方法ではないので先に別案を。
以下のようなjavascriptを試してみてください。

コード:

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




教えていただいたことを行ってみたのですが、PostBackされてしまいます。
やり方が悪いのかな…。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-10-03 18:12
そうですか…
カーソル移動制御のスクリプトと干渉しちゃってるのかな?

とりあえずHTMLコントロールを使う方法を教えときます。
推奨しないと書いたのは、.NET Webアプリケーションのイベントモデルや、DataGridの内部的な実装を理解しないまま、「試してみたらうまくいっちゃった」という思いつきなアイデアだったため。

で、方法ですが、イベントモデルは使えなくても、とりあえずsubmitすればサーバ側のPage_Loadに処理は渡るので、DataGridのItemTemplateタグに以下のように書いてみたわけです。

<input type="button" value="HTMLボタン" onclick="Form1.submit();">

これで動かしてみると、とりあえずPage_Loadに処理は渡ってくるのですが、DataGrid内のどのボタンが押されたのか判別できません。これさえ分かれば、サーバ側の処理を実装できるわけです。

で、判別方法ですが、試しに上記のinputタグにrunat="server"と加えて、ビルドしてブラウザで表示させて、ソースを見てみたら、DataGrid1:_ctl2:_ctl1みたいなnameが付加されている。これがサーバ側に渡せれば良いかな?と思い、サーバコントロールのHiddenをページに追加して以下のように直してみました。

<input type="button" runat="server" value="HTMLボタン" onclick="Form1.Hidden1.value=this.name;Form1.submit();">

で、試してみたら、Page_Loadでnameが拾えました。

ただ、ちょっと不安なのは、「自動生成されるnameが常に一意な法則性に基づいてるのか?」つまり画面を表示するたびにnameが変わるようならサーバ側での分岐判定条件が単純でなくなるので。
これに関しては調べてないので、試してみてください。

#ちょっと日本語を修正

[ メッセージ編集済み 編集者: ぼのぼの 編集日時 2005-10-03 18:25 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-10-03 20:04
ご参考→テキストボックスなどでEnterを押したときに1つ目のsubmitボタンを動作させたくない(中の技術日誌より)


引用:

理由としては、Enterキーでカーソル移動の制御を行っているので、
Webコントロールを置くとEnterキー押下時にPostBackが走ってしまうのが嫌なんです。


 これが「Enter キーで次のコントロールにフォーカスを移動する」を意味しているなら、それこそ止めるべきでしょう。

 Windows、インターネットエクスプローラの使い方として、イレギュラーな操作です。他のアプリケーションでは、そのような動きをしません。
 ユーザも、汎用機から移ってきて、今でこそ「Enter = カーソル移動」かもしれませんが、他のアプリケーションの使い方に慣れたとき、使いにくいアプリケーションになってしまいます。
 それ以外にも Windows アプリケーションを導入するなら、早いうちからその作法に慣れるべきだと思います。
# いや、しばらく後に「使いにくい」と言われたんですよ(--#
___________________________________________________________________
□ written by Jitta on 2005/10/03
じったのノート
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2004-Sept.2006
_________________

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