none
JavaScriptを使用しないでGridViewの行をダブルクリックした際にイベントを発生させる事はできますか。 RRS feed

  • 質問

  • Visual Studio 2005(ASP.net)で開発しています。
    現在はGridViewの行(Row)のAttributesプロパティでJavaScriptのondblclickを指定して画面(window.open)を遷移させています。
    JavaScriptを使用しないでGridViewの行をダブルクリックした際にイベントを発生させる事はできますか。
    的外れな質問をしていたらすみません。
    些細な事でも何でも構いませんのでアドバイス宜しくお願いします。
    では、失礼します。

    2010年11月30日 7:48

回答

  • > JavaScriptを使用しないでGridViewの行をダブルクリックした際に
    > イベントを発生させる事はできますか。

    前提条件が「JavaScriptを使用しない」ということですから、当然、
    イベントというのはサーバー側の ASP.NET  Web アプリケーションの
    プログラムで発生するものですよね?

    であれば、自分の知る限りですが、ASP.NET のサーバーコントロール
    にはそのような機能はないと思います。


    Windows アプリと Web アプリの違いを理解されているでしょうか?

    GridView は Windows アプリの DataGridView とは違います。

    GridView がサーバー側で html にレンダリングされブラウザに送信
    されますが、それは table, tr, th, td 要素で、それをクリックし
    ても何も起こらないことは分かります? 「JavaScriptを使用しな
    い」のですから。

    Button 等を GridView 内に配置して、それをクリックしてポストバ
    ックし、サーバー側でイベントを発生させることはできますが、ダブ
    ルクリックかどうかの判定はできません。

    • 回答としてマーク COBE1972 2010年12月3日 6:22
    2010年11月30日 13:04

すべての返信

  • ネットでいくら検索しても該当する情報がないという事は・・・ 

    それに回答がないという事は的外れな質問なんでしょうか。

    できる、できないだけでも構いませんので宜しくお願いします。

    2010年11月30日 10:45
  • > JavaScriptを使用しないでGridViewの行をダブルクリックした際に
    > イベントを発生させる事はできますか。

    前提条件が「JavaScriptを使用しない」ということですから、当然、
    イベントというのはサーバー側の ASP.NET  Web アプリケーションの
    プログラムで発生するものですよね?

    であれば、自分の知る限りですが、ASP.NET のサーバーコントロール
    にはそのような機能はないと思います。


    Windows アプリと Web アプリの違いを理解されているでしょうか?

    GridView は Windows アプリの DataGridView とは違います。

    GridView がサーバー側で html にレンダリングされブラウザに送信
    されますが、それは table, tr, th, td 要素で、それをクリックし
    ても何も起こらないことは分かります? 「JavaScriptを使用しな
    い」のですから。

    Button 等を GridView 内に配置して、それをクリックしてポストバ
    ックし、サーバー側でイベントを発生させることはできますが、ダブ
    ルクリックかどうかの判定はできません。

    • 回答としてマーク COBE1972 2010年12月3日 6:22
    2010年11月30日 13:04
  • >的外れな質問なんでしょうか。

    Server側で処理されるコントロールなので、そもそもクライアントでどのような操作が行われたか判断することができません。
    あくまで、リンクやSubmitボタンでPOSTやGETが来た時にそれを判断する程度のことしかできません。
    クライアント側の操作をカスタマイズするのであれば、クライアント側でスクリプトを仕込むことが常道かと思われます。
    そのことは、下記のイベント一覧見ても明らかです。
    しかし、「ない」とか「的外れ」であることを証明するのは大変なので、なかなか回答がつかないんだと思います。

    「GridView イベント (System.Web.UI.WebControls)」
    http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.gridview_events.aspx

    >できる、できないだけでも構いませんので宜しくお願いします。

    System.Web.UI.WebControls.GridView を使って、当該の動作をクライアントスクリプトなしで実施するのは「できない」と言ってしまいたいのですが、
    本当にできないの?となると、自分でGridViewのソースのぞいてカスタムコントロールつくって無理やりクライアントスクリプト仕込むようなカスタムコントロール作るとか、
    IEとかブラウザ自体の動作を変更するようなBHOのようなプログラムを別途仕込んでダブルクリックがあればサーバ側に送信するとか、
    あまり現実的ではないような方法でも「できない」とは言えないため、「できない」という回答はなかなか付かないと思います。
    #できることを証明するのは、実際にやってみるとか、誰かやった資料を紹介すればOKですが、
    #できないことを証明するのは「できない」前提を相当厳密に定義しないと厳しいです。
    #その気になればプレミアサポートなどに入って、数千万から積んでMS社に依頼出すとか、メチャな方法で実現できるかもしれません。

    「Visual Studio 2005 によるブラウザ ヘルパ オブジェクトのビルド」
    http://msdn.microsoft.com/ja-jp/library/bb250489(VS.85).aspx

    SurferOnWwwさんの繰り返し見たいになってしまいすいません

    2010年12月1日 1:46
  • 他の人とかぶりますが、ASP.NETはWebブラウザの機能を拡張するものではありません。

    ASP.NET無しの素のHTMLで実現可能なことしかできません。なので、もしJavaScriptなしでGridViewでダブルクリックを~と考えるのなら、素のHTMLでどのように記述すれば実現できるのか?を考えればすぐに答えがわかります。

    それからASP.NETは最終的にはHTMLを出力するので、ごく普通のHTMLの知識も身に着けておくべきです。

    2010年12月1日 4:30
  • JavaScript を使用できない理由が気になりました。
    それも書かれると、何か情報が得られるかもしれませんよ(私にはないのですけど。。)。
    (追記:無効にしてる人への対応、ですかね。それ以外たぶんなさそうですね。)

    それと「ダブルクリック時」ではなくなりますが、代替案としては行セレクタ用のリンクを用いるのではダメでしょうか? よくあるのは「選択」というリンクです。
    同様に、たとえば現状の一覧に「製品名」が表示されている場合、それをリンクにしておくと、製品名をクリックした際にその製品の詳細ページに遷移したりできます。

    (さらに追記:かぶらない内容を返信したつもりでしたが、
    すでに SurferOnWww さんが GridView 内に Button 等を含めると書かれてますし、佐祐理さんの「素のHTMLでどのように記述すれば」のことなので、結局、私の返信も繰り返しになっちゃってることに今気付きました。)

    • 編集済み TH01 2010年12月1日 6:43 さらに追記
    2010年12月1日 5:53