GridViewのDropDownLisについて

このQ&Aのポイント
  • ASP.NET(Microsoft Visual Basic 2010)で開発をしております。GridViewにDropDownLisを配置しているのですが、リストを選択したときの、GridViewの行(row)を取得する方法が分かりません。
  • OnSelectedIndexChangedを使用すると変更時のイベントを拾えてリストボックスの内容を取得出来るところまでは調べたのですが、変更したリストボックスと同じ行にある別の項目の値を取得する必要があるのですが、その方法が分かりません。
  • 変更した行番号が分かれば「gridView.Rows(3).Cells(3).Text」で値の取得は出来るのかな?と考えました。なので、目的は同行の値の取得なので、もし行数が分からなくても構いません。自分なりには、かなり調べたつもりなのですが、どうしても答えを導けず困っています。お分かりの方がありましたら、是非ご教授頂ければ幸いです。
回答を見る
  • ベストアンサー

GridViewのDropDownLisについて

よろしくお願いします ASP.NET(Microsoft Visual Basic 2010)で開発をしております。 GridViewにDropDownLisを配置しているのですが、 リストを選択したときの、GridViewの行(row)を取得する方法が分かりません。 OnSelectedIndexChangedを使用すると変更時のイベントを拾えて リストボックスの内容を取得出来るところまでは調べたのですが、 変更したリストボックスと同じ行にある別の項目の値を取得する 必要があるのですが、その方法が分かりません。 変更した行番号が分かれば「gridView.Rows(3).Cells(3).Text」で 値の取得は出来るのかな?と考えました。 なので、目的は同行の値の取得なので、もし行数が分からなくても 構いません。 自分なりには、かなり調べたつもりなのですが、どうしても答えを 導けず困っています。 お分かりの方がありましたら、是非ご教授頂ければ幸いです。 よろしくお願い致します。

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

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

GridView の SelectedRow プロパティなんかは使えないのでしょうか? http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.gridview.selectedindexchanged(VS.80).aspx

nekocyan
質問者

補足

edp3142さま 早速のご回答をありがとうございます。 早速教えて頂いた、ページをみて、組み込んでみたのですが 次の様な問題があり、うまくいきません。 よろしければ、もう少々ご教授頂ければ幸いです。 ・問題一つ目  「Dim row As GridViewRow = gridViewXXX.SelectedRow」と  定義して、この部分で中断して「gridViewXXX.SelectedRow」を  クイックウォッチで見ると「nothing」になっているため、rowの  値が取得できない。 ・問題二つ目  「SelectedIndexChanging」のイベントが発生しない。 何か設定に問題があるのだとはおもうのですが、皆目見当がつきません もし思い当たる事があれば是非お教え頂ければ幸いです。 よろしくお願い致します。

その他の回答 (2)

  • WebSurfer
  • ベストアンサー率55% (33/59)
回答No.3

以下の URL の質問と同じことのようですね。そこに解答も書いてあるので見てください。

参考URL:
http://social.msdn.microsoft.com/Forums/ja-JP/aspnetja/thread/79fbcc75-cb62-4c8f-87c8-39ae9204b643
noname#259269
noname#259269
回答No.2

#No.1 です。 多分、MSDN のサンプルと違う方法で実装されているのでしょうね。このサンプルは、解説にあるように Select ボタンを用意し、それを押した場合の実装なので。。。 DropDownList の具体的実装(aspx および aspx.vb) を公開すれば回答できる人がいるかもしれません。

関連するQ&A

  • gridviewでの高さの取得方法

    gridviewの各行の高さを取得する方法を教えていただけないでしょうか? gridview.Rows(0).Height.ToStringを行っても、空白になってしまいます。 gridview.Rows(0).Cells(0).Height.ToStringでも同じ結果でした。 申し訳ございませんが、よろしくお願いします。

  • GridViewのEditTemplate

    すみません。改めて質問させていただきます。 GridViewのEditTemplateにDropDownListが配置されています。 更新したときに、そのDropDownListの値を取得する方法をご教授頂きたいです。 言語はVBです。以下のコードを書きましたが取得できません(Updatingイベントのとき)↓ Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating MsgBox(GridView1.Rows(e.RowIndex).ToString) End Sub とりあえずメッセージボックスにドロップダウンリストの値を表示したいです。

  • GridViewからの値を全件LOOPして取得したい

    GridViewについて教えてください。 <環境>ASP.NET データソースにSQLDataSourceを指定し、GridViewに全件を自動バインドして表示しています。 画面上に設置したボタン押下のイベントハンドラで、そのGridViewの全行をループして各列の値を参照したいのですが、 以下のようなに記述しても(1)の部分でNOTHINGとなりエラーになります。 どのようにすればよいでしょうか? やりたいことは、GridView全行ループし、ITEMKINDの値が"1"の時、TemplateField内にあるtxtNVERCHARの値を取得することです。 ご教授お願いします。 --------------------------------- <Columns> <asp:BoundField DataField="ITEMKIND" HeaderText="ITEMKIND" Visible="False" /> </asp:BoundField> <asp:TemplateField HeaderText="ITEM"> <ItemTemplate> <asp:TextBox CssClass="txtstr" ID="txtNVERCHAR" runat="server" Text='<%# Bind("ITEM_NVERCHAR", "{0}") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> </Columns> --------------------------------- Protected Sub 更新_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExec.Click For Each row As GridViewRow In grdList.Rows Dim strITEMKIND As TextBox = DirectCast(row.FindControl("ITEMKIND"), TextBox)  ←(1) IF strITEMKIND.Text = "1" THEN Dim strDDL As TextBox = DirectCast(row.FindControl("txtNVERCHAR"), TextBox) End IF Next End Sub

  • 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 の概念はどういうふうになるなど、わからないことだらけです。 何卒よろしくお願いいたします。

  • 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日ほどどうすればいいかを検索してみたのですが、良い答えが見つからなかったので質問させていただきます。よろしくお願いします。

  • 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 非連結フィールド

    大変お世話になっております。 GirdView 3番目のセルをテンプレートフィールドにして そこに非連結のテキストボックスを設置しております。 各行の非連結のテキストボックスに数字を入力して ボタンクリックにより、その値を取得したいのですが、 下記のプログラムでは、空白が返ってきてしまいます。 非連結のテキストボックスの値を取得するには下記では ダメなのでしょうか? ご指摘などございましたら、何卒ご助言いただけますと 嬉しい限りでございます。   For I = 0 To Me.GridView1.Rows.Count - 1     MsgBox(DirectCast(Me.GridView1.Rows(I).Controls(2), DataControlFieldCell).Text)   Next

  • .NETのGridViewでテストデータの投入方法

    Microsoft Visual Studio 2008を使用しています。 ASP.NETのGridViewで、データソースを使用せずにテストデータを投入する方法を教えて下さい。 情けないくらいの初心者です。どうか助けてください。 表示だけを確認して画面整形したいので、データ部に『12345』などのテストデータを投入して表示させたいのですが、そのやり方が分かりません。 GridView自体の設置と、列の追加までは出来ています。が、肝心のデータを入れられないためにプレビューしても真っ白になってしまいます。 検索して調べた結果、ダミーのデータテーブルを作成してバインドする方法があったのですが、それをどこに書けばいいのか、また、関数名??をどうしたらいいのかが分かりません。 失礼ながら拾ったソースをそのまま拝借すると… DataTable table = new DataTable(); table.Columns.Add("data1"); table.Columns.Add("data2"); DataRow row1= table.NewRow(); row1["data1"] = "value1-1"; row1["data2"] = "value1-2"; table.Rows.Add(row1); DataRow row2 = table.NewRow(); row2["data1"] = "value2-1"; row2["data2"] = "value2-2"; table.Rows.Add(row2); GridView1.DataSource = table; GridView1.DataBind(); これを、vbの方に記述すればいいのでしょうか? また、function名といいますか、sub名?をどうしたらいいのかがわかりません。。 デザイン画面上でダブルクリックして自動生成されるソースだと Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged End Sub になるので、ちょっと違う気がします・・。 上の拝借したソースよりも、もう少し分かりやすく記述していただけると大変嬉しいです・・。 本当に本当に初心者で申し訳ありません!!! とても困っているので、どうか助けてください、宜しくお願い致します!

  • gridviewでIMEを設定するには

    GridViewについて教えてください。 <環境>ASP.NET GridViewのItemTemplateにテキストボックスがあります。 そのテキストボックスのIME制御をしたいのですが記述方法がわかりません。 RowDataBoundイベントに記述するのでしょうか? gridviewでないと下記のようにすることで設定できるのですが、gridviewに苦戦しています。 ご教授お願いします。 txtName.Style.Add("ime-mode", "active")

  • 動的にgridviewの背景色を変えたいのですが…。

    ASP.NET、VB.NET環境です。 DataGridViewの背景色を、条件により動的に変更したいと思っています。 色自体はCssファイルに定義する予定なので、Cssファイルから色を取得 できるようにしたいです。 まだASPの理解が薄いのですが、ascxファイルを見ると、 <asp:GridView (略)CssClass="border-w">の記載があるので、 通常時はborder-wというスタイルになる?んですよね? バインドのイベント時に1行1行色を変えるしかないかなと思ってますが、 (この時もどうやってCssから色をとればいいやら…)スマートなやり方を ご存知でしたら、ご教授ください。

専門家に質問してみよう