ASP.Net GridView DataBind

このQ&Aのポイント
  • ASP.Net GridViewのDataBindメソッドの呼び出し方がわからない
  • GridViewに新しいデータと一緒に表示を更新させたい
  • GridView1を定義して実行する方法がわからない
回答を見る
  • ベストアンサー

ASP.Net GridView DataBind

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

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

  • ベストアンサー
  • onos
  • ベストアンサー率81% (127/155)
回答No.1

FormView等の複合コントロール(で呼び方いいんだっけかな?)の内部にあるコントロールを見つけるには、コントロールツリーをもぐっていって、配置しているコントロールをみつけてあげる必要があります。 で、結構面倒です。 #なれてれば探す方法はあるんですが。 で、下記のページの最後に書いてるようなFindControlを再帰で実行してコントロールを見つけてくれるような関数使うと、コントロールツリーを自動でたどっていって、該当のコントロールを見つけてくれます。 http://blogonos.wordpress.com/2006/03/29/gridview%e3%81%8b%e3%82%89%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92%e8%bf%bd%e5%8a%a0%e3%81%99%e3%82%8b/ これが使えるんじゃないかと思います。

kyokotan12
質問者

お礼

onosさん 大変お世話になっております。 Dim Fv As GridView = FormView1.Row.FindControl("GridView1") Fv.DataBind() たったこれだけで実現できたのですね! なんていうか、FindControl の使い方の基礎の理由を改めて勉強させていただきました。今回の質問で頂戴した回答の意味はわたくしにとって大きいものでした。 ありがとうございました。

関連するQ&A

  • ASP.Net GridView TextBoxで

    大変お世話になります。 FormViewにあるGridView を編集状態にした状態で、 Dim Gv As GridView = FormView1.Row.FindControl("GridView1") TextBoxのデータを変更した際に、他のTextBoxの内容を変更したいのですが、 この場合、GridViewのTextBoxのTextChangedイベントを使用しています。 ここで問題なのが、 (1) GridVew の行の Index の取得 (2) TextChangedイベント内での FindControl の記述の仕方 上記のやり方がよくわかりません。 ボタンを使用した場合の Index の取得などはわかるのですが、 GridView1_RowCreated イベントで Dim A As Button = CType(e.Row.FindControl("A"), Button) A.CommandArgument = e.Row.RowIndex.ToString() 上記(1)、(2)はどうしたらよいのかわかりません。 編集状態にあるGridView の Index の取得方法とローカル関数でのFindCotrol メソッドの やり方など、お分かりになる方がいらっしゃいましたら 何卒ご教授いただければと存じます。

  • ASP.Net GridView の加工

    大変お世話になります。 GridView のテンプレートモードにいくつかのコントロールを配置しております。 コントロールAの値が True なら コントロールBの背景色を変えたいと思っているのですが、 どのイベントでそれらを記述して良いかわかりません。 また、GridView1_DataBinding、GridView1_DataBound、GridView1_RowDataBound などで記述しようとするのですが、これらのイベントでは、FindControl メソッドが使えないのですが、  GridView1_RowDataBound イベントで e.Row.Cells(1).Text = "1" などで記述しないとダメでしょうか? テンプレートにしてしまうと、e.Row.Cells の概念はどういうふうになるなど、わからないことだらけです。 何卒よろしくお願いいたします。

  • ASP.Net GridView Select

    大変お世話になっております。 GridView のテンプレートにボタンを2つ配置しております。 A と B どちらのボタンのCommandName にも Select を記述して 選択された行のあるフィールドの値を取得したいのですが、 GridView1_SelectedIndexChanging で、e.NewSelectedIndex を使い該当セルを見つけることはできるのですが、AとBのボタンそれぞれで違うことをしたいのです。 イメージ的にいいますと     If CommnadButton.Name = "A" then         Aでやりたいこと     else If CommandButton.Name = "B" then         Bでやりたちこと     end if CommnadButton.Name なんてメソッドもプロパティも存在しないものですが、 SelectedIndexChanging イベントの中で どのボタンが押されてこのイベントが実行されるのかが、わかる方法がございましたら、ぜひご教授いただけますと大変助かる次第でございます。 何卒よろしくお願い申し上げます。

  • ASP.NET 2.0 GridViewの更新ボタンについて

    いつもお世話になっています。 GridViewでItemTemplateでGridViewの中にボタンを作っています。 それで、編集ボタンを押して、データを書き換え更新ボタンを押すのですが、更新されません。 どこか間違っていじったのかもしれません。ここじゃないかと思うところありましたら、回答お願いします。 (更新ボタンのCommandNameはUpdateになっています。) <<環境>> Client:Vista Server:Server2003 VisualStudio2005 SP1

  • ASP.Net SetEditRowの反対メソッド

    大変お世話になっております。 日夜、ASP.NETを勉強しておりますが、まだまだ初心者の域を脱しできない感じでございます。 GridView で 編集モードにするのに GridView.SetEditRow(インデックス) で出来ることは知っているのですが、これを通常のモード(ItemTemplate) に戻すメソッドはないのでしょうか? http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.gridview.seteditrow.aspx こちらの左側に表示してあるメソッドを見てみたのですが、どれがそれにあたるのか、まったくわかりません。 GridView.DataBind を実行しても元に戻りませんし・・・ もしかしたら、すごく簡単な事かもしれませんが、何卒ご教授いただければと存じます。 よろしくお願い申し上げます。

  • 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には毎回、編集した時間を入れていきたいのです。 …が、実行時に「'<' 付近に不適切な構文があります」と怒られてしまいます。 <%$ ~~ %>があやしいんじゃないかなというのは思うのですが、自分ではわかりません。。 どなたかわかる方いらっしゃいましたらお教えください。 よろしくお願いします! 説明不足でしたら補足しますので、おっしゃってください。

  • ASP.NET2.0 GridViewのページャー設定について

    お世話になります。 現在VS2005のASP.NETを学習しております。 GridViewコントロールのページャー設定について質問があります。 500レコード程のデータを1ページに10件ずつ表示しようと思い、 GridViewコントロールのPagerSettingsプロパティのVisibleをTrueに設定しました。 それだけでテーブル下にページ番号リンクが表示され、とても簡単で感動しました。 その後、同じくPagerSettingsプロパティのModeをNumericからNextPreviousに変更するなど、いろいろ試していました。 そこで気づいたのですが、そのモードの中にFirstLastとNumericが一緒になったものはあるのですが、 NextPreviousとNumericが一緒になったモードがありません。 冷静に考えると現在のページ番号の両隣のリンクを押せばいいだけなのですが、 頑固な方がどうしてもページ番号と前へ・次へボタンを一緒にしてくれと頼まれた場合、 そのようにカスタマイズすることは可能なのでしょうか? また可能な場合、どのようにすれば実現できるのでしょうか? 知っている方がいたら、どうぞ宜しくお願いします。

  • ASP.Net FormViewでの削除について

    大変お世話になっております。 FormView を セッション変数にて該当するデータを表示するようにしております。 そのFormView に削除ボタンを作成して、ボタンのクリックイベントにて下記のようなプログラムを記述しております。     FormView1.DeleteItem()     Session("Number") = ""     Response.Write("<script language='javascript'> { window.close();}</script>") 上記を実行すると削除処理はされ、セッションもクリアされるのですが、その後、そのページを閉じたいのですが、3行目が無視されて、LoadイベントやDataBoundイベントに移ってしまいます。 DeleteItemメソッドでカレントデータを削除してその画面を閉じるには、どうすれば良いのでしょうか? 何か思い違いをしている個所や、ご指摘などございましたら何卒ご教授いただければと存じます。 よろしくお願いいたします。

  • 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コントロールを使用して一行ずつ書きこんでいくしかないのでしょうか? 返答をお待ちしております。

  • ASP.Net ODS UpDateメソッド

    お世話になります。 ASP.Net 初心者です。日夜修行をしているのですが、難解な壁に当たっております。 GridView にデータソースとして ObjectDataSource を指定しております。 GridView でどうしても インラインエディットをしたい個所が2カ所あるのです。 赤間本では、インラインエディットはいろいろな事から使用しないほうが良いとのこのなのですが、どうしても使用したいのです。ですが、GridViewの編集を有効にするにチェックをして、問題の2か所を変更しても、隠れているフィールドに対する値がないとエラーになってしまいます。 レコードにはユニークなIDキーがあるので、以下のようなUPDate用のメソッドを作成し、ObjectDataSource のデータソースの構成、メソッドの定義の UpDateのところでメソッドを選択したのですが、パラメータも以後聞かれないですし、これが正しいのかもわかれいません。 UpDateの時の戻り値、パラメータの設定など わからない事ばかりです。 GridView の編集ボタンを押して、2つの項目を変更し、更新を押したときの制御の時にこのメソッドをどう使ったらいいのかなど、何卒ご教授いただけますと大変ありがたいです。 もともとある UpDate のところを見るとパラメータと戻り値しか書いてないのですが、プログラムが記載されていれば、それを見て応用できるんですが・・・ 何卒よろしくお願いいたします。 <DataObjectMethod(DataObjectMethodType.Update, False)> _ Public Function UpDateNitteiSeekData(ByVal TEST1 As Nullable(Of Integer), ByVal TEST2 As Nullable(Of Integer), ByVal KeyID As Integer) As NitteiSeekDataSet.t_MasterDataTable Dim SQLDa As SqlDataAdapter Dim SQL As String SQL = " UPDATE dbo.t_Master SET TEST1 = " & TEST1 & " ,TEST2 = " & TEST2 & " WHERE(KeyID = " & KeyID & ")" 'このKeyID がユニークな主キーになります。      ’この辺りから怪しくなります。 UpDateの時は以下でいいのかな? SQLDa = New SqlDataAdapter(SQL, "Data Source=SERVER01;Initial Catalog=TEST;Integrated Security=True") Dim table As NitteiSeekDataSet.t_MasterDataTable = New NitteiSeekDataSet.t_MasterDataTable SQLDa.Fill(table)      '戻り値って table 型でいいの? Return table End Function