- PR -

JavaScriptでgridviewの指定セルの値を参照する

1
投稿者投稿内容
ぴぃ子
常連さん
会議室デビュー日: 2008/02/21
投稿数: 34
投稿日時: 2008-04-09 11:59
いつもお世話になっております。

VS2005/ASP.NET2.0です。

今回
------------------------------------
選択| Key | Name | 使用情報 その他の情報....
------------------------------------
□ | aaa |あ | 使用中  .... 2008/01/01
□ | bbb |い | 未使用中 .... 2008/02/01



上記のようなGridViewを作成しました。(選択はテンプレートフィールドでチェックボックス)
他の値は参照のみでBoundFieldです。

ここで、チェックボックスをクリックした場合にワーニングを表示させたいので
(例えば使用情報が使用中だと「使用中です。注意してください」等のalertを表示する。)
同行の別セルの値をjavascriptで参照する。という事が必要になりました。
(ポストバックはさせたくない)

足りない知識をフル回転させた結果、
BoundFieldをテンプレートフィールドで定義し(label)、そこでEval("…")を行い、
その値をinnertextで取得する。ということはできました。
(もしくはクライアントコールバックを使用しようかとも思いました…。)

しかし、もしBoundFieldを直接参照する。という手法があればと思い質問させて頂きました。

どうぞよろしくお願い致します。

[ メッセージ編集済み 編集者: ぴぃ子 編集日時 2008-04-09 12:01 ]
RapidExpress
常連さん
会議室デビュー日: 2007/11/11
投稿数: 42
お住まい・勤務地: おおさか
投稿日時: 2008-04-09 13:45
RowCreatedイベントなどで、出したい値を取得してjavascriptを生成し、
それをチェックボックスのAttributes.Add("onclick", [スクリプト文])でセットすればいけると思います。
(チェックボックスはe.Row.FindControlで取得)

#コード追記
コード:

Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.DataItem("状態").ToString = "使用中" Then
Dim chk As CheckBox = CType(e.Row.FindControl("CheckBox"), CheckBox)
Dim script As String = "alert('使用中です');"
chk.Attributes.Add("onclick", script)
End If
End If
End Sub



[ メッセージ編集済み 編集者: RapidExpress 編集日時 2008-04-09 13:57 ]
ぴぃ子
常連さん
会議室デビュー日: 2008/02/21
投稿数: 34
投稿日時: 2008-04-09 14:07
RapidExpressさん 返答ありがとうございます。

スクリプトの生成は盲点でした。
ついJavaScriptはJavaScript側のみでコードを作成することしか考え付かないのは
頭の中が硬化している証拠ですね。

参考にさせて頂きます!
1

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