ASP.NETのGridViewでNULLの場合にチェックボックスにしたい

このQ&Aのポイント
  • ASP.net(VB)とSQLSERVERで開発している際、NULLの場合にGridViewでチェックボックスを表示したい方法を知りたいです。
  • チェックボックスがオンの状態で実行ボタンが押下された場合に、別のストアドプロシージャを実行してNULLを「確認済」とする方法についても教えてください。
  • また、GridViewでこのような操作が可能なのか、それともHTMLコントロールを使用して一行ずつ書き込む必要があるのかを教えてください。
回答を見る
  • ベストアンサー

ASP.NETのGridViewでNULLの場合にチェックボックスにしたい

ASP.net(VB)とSQLSERVERで開発しているのですが、SQLSERVERでストアドプロシージャでSELECT文を発行するSQLを書きました。 1)そのデータをGridViewで表示したのですが、列がNULLの場合にチェックボックスを表示したい。←これが分からない 2)チェックボックスがonの状態で実行ボタンが押下された場合に別のストアドプロシージャを走らせてNULLを「確認済」としたい。 (例) チェック   |名前 |メールアドレス 確認済    |Aさん|aaaa@test.co.jp □(チェックボックス) |Bさん|bbbb@test.co.jp [実行ボタン] このようにこのようなことはGridViewで可能なのでしょうか? それとも、HTMLコントロールを使用して一行ずつ書きこんでいくしかないのでしょうか? 返答をお待ちしております。

質問者が選んだベストアンサー

  • ベストアンサー
noname#259269
noname#259269
回答No.1

実際やったわけではないですが、可能だと思います。 ただ「確認済」表示列とチェックボックス列を分けた方が簡単なのではないでしょうか? さて、やり方としては、チェックボックスが含まれる列は、全行とにかくチェックボックスが表示されるようにデザインします。 実行時に、行の描画イベント(RowDataBoundイベント)の中で、値が NULL でなければ、CheckBox を削除/非表示するようにし、代わりに"確認済"と表示する Literal コントロールでも追加してやればよいんじゃないかと思います。

ten_01
質問者

お礼

ご返事ありがとうございます。 実際にやってみたのですがチェックボックスのコントロールがうまくとれず、つまずいてしまいました。 (エラー:オブジェクト参照がオブジェクト インスタンスに設定されていません。) [Default.aspx] <columns> <asp:boundfield datafield="No." headertext="No." FooterText="処理済"/> <asp:TemplateField HeaderText="処理済"> <ItemTemplate> <asp:CheckBox ID="GridCheck" runat="server" /> <asp:Label ID="GridCheckLabel" runat="server" Text="済"></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:boundfield datafield="処理済flg" HeaderText="処理済flg"/> <asp:boundfield datafield="名前" headertext="名前"/> <asp:boundfield datafield="メールアドレス" headertext="メールアドレス"/> </columns> [Default.aspx.vb] Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound Dim RowCnt As Integer Dim TmpCnt As String Dim TmpCntStr As String Dim GridRow As GridViewRow RowCnt = GridView1.Rows.Count If RowCnt > 0 Then GridRow = GridView1.Rows(RowCnt - 1) 'タイミングが新しい行の挿入なので前行を編集する If GridRow.Cells(2).Text = "&nbsp;" Then '確認済flgがNULLの場合&nbsp;が挿入される TmpCnt = "00" + CStr(RowCnt + 1) 'CheckBoxのIDが変更されるためIDを合わせる TmpCnt = Right(TmpCnt, 2) TmpCntStr = "GridView1_ctl" + TmpCnt + "_GridCheck" 'GridRow.Cells(1).FindControl(TmpCntStr).Visible = False 'ここでエラー 'GridRow.Cells(1).FindControl.(TmpCntStr).Visible = False End If End If End Sub よろしければご指導をお願いできませんでしょうか?

ten_01
質問者

補足

申し訳ありません、TmpCntStrの箇所をGridCheckにすればよかったのですね。 投稿する前に試したのですが、なぜかうまく動かなかったので思わず書き込んでしまいました。(なんでだろう…) ついでと言いますか、TmpCntStrはうまく表示できた時にソースの表示で作成されたものを見た結果だったりします。 このような若造にお付き合い頂きありがとうございました。

関連するQ&A

  • ASP.Net GridView DataBind

    お世話になります。 FormView の中に いくつかのコントロールと ボタンとGridView を配置しております。 ボタンを押すと、GridView のレコードが追加するような UpDate文を実行するようになっています。 GridViewのデータも一緒に新しいデータとともに表示を更新させたいと思うのですが、 GridView の DataBindメソッドをどうやって呼び出していいかわかりません。 名前は GridView1 なのですが、Button1_Click メソッドの中で、GridView1 の候補が出ないですし、 どうやって定義して、実行すればいいのかわかりません。 何卒よろしくお願い申し上げます。

  • ストアドプロシージャを実行時のパラメータについて

    はじめましてkou2000と申します。SQLServer2000でストアドプロシージャを作成していますがうまくいきません。 下記のようなことが実際にできるかご教授ください。 CREATE PROCEDURE TEST_PROCEDURE @SYUBETU nvarchar AS SELECT AAAAAAA INTO ##TMP FROM TEST WHERE BBBB IN (@SYUBETU) GO 上記のようなストアドプロシージャを作成しプログラムから実行する際に @SYUBETU = "'1','2','3','4','5'" のような可変の文字列を設定しストアドプロシージャを実行できますでしょうか? よろしくお願いします。

  • ASP.netにストアドプロシージャが登録できない

    ASP.netにストアドプロシージャが登録できません。 SQLServer2000にストアドプロシージャを作成しASP.netにsqlcommandを作成。 sqlcommandのプロパティのcommandtypeをStoredProcedureとし、 commandtextにストアドプロシージャ名を入力すると このコマンドの新しいパラメータコレクションを作成しますか?と出てきて 「はい」とするとサーバー名選択画面となり、サーバー名を正しく入力し ログインID、パスワードも正しく入力、オプションも正しく入力したが OK押下後にプロパティの値が無効ですとなってしまい詳細を見ると ストアドプロシージャ***がデータベースに見つかりませんでしたと なってしまいます。 既存のストアドプロシージャはリンク出来るのですが、新規のものが このようになります。原因・解決方法を教えて頂きたく宜しくお願いします。

  • GridViewからチェックボックスでデータを選択し、次のページへ送信する動作について

    現在VisualWebDeveloper2005にて、セミナーの申し込みページを作成しています。 動作は、コース一覧(GridView)からチェックボックスで受けたいコースを選択し、GridViewの下にある[申し込む]ボタンを押すとGridViewからチェックがついている行のデータ(コースID)を取得し、次ページに送信→次ページでそのIDをもとにGridViewで詳細情報を表示する確認ページを作成したいと思っています。 GridViewの中にチェックボックスを作成し、チェックボックスがオンになっているもののみ、という部分まではプログラムが完成しているのですが、取得したデータを送信→次ページで受け取り表示の部分がわからずに困っています。 チェックした行のデータをSessionに入れようと考えたのですが 'チェックボックスがオンになっている時、その行のIDを取得してテキストボックスに表示 Protected Sub Button4_Click(ByVal sender As Object, ByVal e As System.EventArgs) For Each row As GridViewRow In GridView1.Rows Dim cb As CheckBox = CType(row.FindControl("cbSelect"), CheckBox) If cb.Checked Then Session("test") = row.Cells(1).Text Response.Redirect("kakunin.aspx") End If Next End Sub このプログラムだと複数の項目をチェックしても1つしかデータが送信されないのでどうすればいいかわからない状態です。 3日ほどどうすればいいかを検索してみたのですが、良い答えが見つからなかったので質問させていただきます。よろしくお願いします。

  • vb.netにてgridviewのソート

    vb.netにてgridviewのソートについてアドバイスをお願いいたします。 webページにてgridviewを使用しDBの内容を表示しております。 gridviewにテンプレートフィールドとしてチェックボックスを追加し、すでに登録されている(別DB内に格納)しているものにはチェックをつけております。 現在、マスタとなるDBから読み込んだ並びで表示されているところを チェックボックスがTRUEの行を昇順にて表示させることは可能でしょうか?

  • JAVA?チェックボックスについて

    DBが使えないHTMLのみのローカル環境です。 ちょっとした業務の切り分けにHTMLを使いたいのです。 チェックボックスが4つあるとします。 そのうち一つをチェックすると、それに適応したチェックボックス4つが下部にあたらしく表示され、 さらにそのチェックボックスから一つ選択すると、 下部のテキストエリアに適応した文章が表示される、というようなものは可能ですか? テキストエリアに反映させる際にボタン押下が必須ならそれでも問題ありません。 (押下の手間がなければ、それが一番ではありますが) ある程度は理解しているのですが、お助けください。 できれば、チェックボックスを選択しなおすと結果がリセットされてやり直せるとうれしいです。 不可能だ!というならそういうお答えでもかまいません。 まったくもって、不可能かどうかもわからないので… 宜しくお願いいたします。

  • ストアドプロシージャのSET文について

    SQLserverのストアドで SET @aaaa = NULL って記述は有効なのでしょうか?

  • チェックボックスにチェックが付いているかを取得したい

    ACCESS2003を使用しています。 チェックボックスにチェックが付いているかを取得したいのですが下のコードを実行すると 「実行時エラー'94' Nullの使い方が不正です。」 というエラーになってしまいます。 Sub test() MsgBox Form_フォーム1.チェック0.Value End Sub フォームを開くとチェックボックスが図のように灰色になるのですがこれが原因なのでしょうか? ちなみに同じことをエクセルで行なったら問題なくできました。 よろしくお願い致します。

  • ASP:チェックボックスについて

    アンケートページを作成中です。HTMLでチェックボックスを作りました。テキストベースかエクセルベース(縦並び)でアンケートの答えを書き出し集計をとる予定です。まず、ラジオボタンに対してのASPは分かったのですが、チェックボックスに対してのASPが分かりません。複数チェックが出来なくなってしまったり、結果(テキストやエクセル)にアンケートの答えが出なく”;;”表示になってしまいます。分かる方、どうか教えてください。ASP初心者です。よろしくお願いします。

  • ASP.NET、GridViewコントロールの各コマンドについて。

    開発環境:MS VisualStudio 2008 MS SQLserver 2005 ASP.NETで出退勤管理システムの開発をしております。 GridViewコントロールの編集ボタンについて質問です。 GridViewコントロールの編集ボタンを利用するには、 aspxファイルのデータソースのところにUPDATEコマンドを設定するかと思うのですが、 Updatecommand="Update [timecard] Set" + "[DATE]=@DATE" + ",[SYUKKIN]=@SYUKKIN" + ",[TAIKIN]=@TAIKIN" + ",[REST]=@REST" + ",[ZITUDOU]=@ZITUDOU" + ",[S_BIKOU]=@S_BIKOU" + ",[T_BIKOU]=@T_BIKOU" + ",[SUBMIT_DATE]=@SUBMIT_DATE" + ", [AMEND_DATE]= <%$DateTime.Now.ToShortDateString %>" //←これ + " ,[ADMIT]=@ADMIT " + "where [NAME]=@NAME" こんな風にAMEND_DATEには毎回、編集した時間を入れていきたいのです。 …が、実行時に「'<' 付近に不適切な構文があります」と怒られてしまいます。 <%$ ~~ %>があやしいんじゃないかなというのは思うのですが、自分ではわかりません。。 どなたかわかる方いらっしゃいましたらお教えください。 よろしくお願いします! 説明不足でしたら補足しますので、おっしゃってください。

専門家に質問してみよう