- 題名: asp:HyperLinkFieldをクリックイベント取得
- 日時: 2011/06/10 18:23:11
- ID: 28641
- この記事の返信元:
- (なし)
- この記事への返信:
- [28644] Re[1]: asp:HyperLinkFieldをクリックイベント取得2011/06/11 13:51:20
- [28674] Re[1]: asp:HyperLinkFieldをクリックイベント取得2011/06/17 12:53:59 [解決]
- ツリーを表示
■No28641に返信(はちまきさんの記事)
イベントの名称から推測すると設定したいイベントはサーバー側でのイベントでしょうか。
HyperLinkFieldコントロールは以下のようなHTMLを出力します。
ユーザーがクライアント側でリンクをクリックするとブラウザはリンク先を開きます。
ブラウザは情報をサーバーに送りませんので処理がサーバー側に移ることはありません。
サーバー側のクリックイベントをHyperLinkFieldコントロールで利用することはできません。
<a id="HyperLink1" href="http://www.google.co.jp/">HyperLink</a>
LinkButtonコントロールを使用してはいかがでしょうか。
LinkButtonコントロールは以下のようなHTMLを出力します。
ユーザーがクライアント側でリンクをクリックするとブラウザはフォームをサブミットします。
ブラウザは情報をサーバーに送り処理がサーバー側に移ります。
サーバー側のクリックイベントを利用することができます。
<a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>
<script type="text/javascript">
function __doPostBack(eventTarget, eventArgument) {
……
theForm.submit();
}
</script>
■No28658に返信(はちまきさんの記事)
GridViewというのを見落としていました。ButtonFieldコントロールの方が
LinkButtonコントロールより適切でした。失礼しました。
ButtonFieldコントロールが生成するボタンのテキストを取得したいということですかね。
ボタンはCells(1)に配置されているということですか。
コントロールの構造は以下のようになります。
GridViewRow
└─DataControlFieldCell
└─DataControlLinkButton
はちまきさんのコードのselectedRowがGridViewRowオブジェクト、TestCellが
DataControlFieldCellオブジェクトです。
TestCellのControlsプロパティを参照してDataControlLinkButtonオブジェクトを取得して型変換
してTextプロパティを参照するとよいです。
DataControlLinkButton型のアクセス修飾詞はinternalです。取得したObject型の
DataControlLinkButtonオブジェクトをDataControlLinkButton型に型変換することはでき
ません。DataControlLinkButton型の基本型であるLinkButton型もしくはLinkButton型の基本型
であるIButtonControl型に型変換するとよいと思います。
Dim button As IButtonControl = DirectCast(TestCell.Controls(0), IButtonControl)
Dim strTest As String = button.Text
ButtonFieldコントロールのCommandNameプロパティにSelectを設定している場合
GridView.SelectedIndexChangedイベントが発生します。ボタンをSelectedIndexChanged
イベントのハンドラで取得する場合は当該行をGridView.SelectedRowプロパティで参照できますので
こんな感じでできるかと思います。
Dim button As IButtonControl = _
DirectCast(GridView1.SelectedRow.Cells(1).Controls(0), IButtonControl)
分類:[ASP.NET]
いつも参考にさせていただいております。
ASP.NET GridViewのasp:HyperLinkFieldをクリックした時のイベントを
自ページ内で取得する事は可能でしょうか。
SelectedIndexChangedやSelectedIndexChangingイベントでうまく取得する事が出来ませんでした。
■ソースコード
<asp:HyperLinkField DataTextField="orderLine" HeaderText="行" SortExpression="行"
DataNavigateUrlFields="引数1,引数2"
DataNavigateUrlFormatString="./遷移先.aspx?第一引数={0}&第二引数={1}"
Target="_self" />