環境:VS2008&VB.NET&ASP
GridViewに手動でテーブルからデータを読みデータバインドせず
DBの値を表示する方法を考えていますがうまくいかず困っています。
(データバインドしたくない理由はデータバインドを行っていると行の挿入や移動ができない認識のためです。)
初心者のため見当違いなことをしているかもしれませんが
それも含めまして質問させていただきます。
質問1
そもそもGridViewでデータバインドせずに手動でデータを表示することは可能でしょうか。
質問2
以下のコードで試しましたが「GridView1.Controls(0).Controls.Add(row1)」でExeptionが発生してしまいました。
手順に不適格な箇所があるのでしょうか。
strSql = "SELECT * FROM Data_Table"
Using connection As New SqlClient.SqlConnection(cnStr)
Dim command As New SqlClient.SqlCommand(strSql, connection)
connection.Open()
Dim dr As SqlClient.SqlDataReader = command.ExecuteReader
While (dr.Read = True)
'データあり
str1 = dr("data1")
str2 = dr("data2")
str3 = dr("data3")
End If
connection.Close()
Dim item1 As DataGridItem
item1 = New DataGridItem(-1, -1, ListItemType.Item)
Dim cell0 As TableCell = New TableCell
item1.Cells.Add(cell0)
Dim cell1 As TableCell = New TableCell
item1.Cells.Add(cell1)
Dim cell2 As TableCell = New TableCell
item1.Cells.Add(cell2)
Dim row1 As New GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal)
row1.Cells.Add(cell0)
row1.Cells.Add(cell1)
row1.Cells.Add(cell2)
GridView1.Controls(0).Controls.Add(row1)
End While
End Using
エラーの内容
System.ArgumentOutOfRangeException はユーザー コードによってハンドルされませんでした。
Message="指定された引数は、有効な値の範囲内にありません。 パラメータ名: index"
お力添えをよろしくお願い致します。
No.2ベストアンサー
- 回答日時:
GridViewのRowsコレクションに Addメソッド無いため
コードでGridViewの行の追加が不可能なように思います
DromDownListのItemsなどなら Addメソッドもあるので
バインドしないでも項目の追加が可能だと思われます
SQLServerなら SQLDataSource経由でバインドした方が扱いやすいかもしれませんよ
DataSource経由なら DataSetやDataAdapterなどもウィザードで生成されますし
Tableについても型指定されたDataTableの派生クラスが生成されます
VBに付属のMSDNなどで GridViewのページの中のリンクを参照してみてください
この回答への補足
redfox63さま
ご回答ありがとうございます。
SQLDataSource経由でバインドしても行の挿入や行の移動は可能なんですね。
そもそもそこに認識の誤りがあったようです。
SQLDataSource経由でバインドした場合には行の挿入などはできないと思っていました。
行の挿入や追加、移動はDataSetを取得してGridViewのDataSouceに
変更後のDataSetを再設定しDataBaindを行えば実現可能なのでしょうか。
MSDNのGridViewのページも確認してみます。
ありがとうございます。
No.1
- 回答日時:
GridViewがバインド無しのデータを扱えるようになっていなさそうです
データの並び順じたいはユーザー側でどの列を基準に並び替えるかを
SQLで指示するなり
取得したDataSetから新たにDatTableを派生させるなりしてやればいいように思います
SQLなら Order By 句などで指示する
DataSetからなら
dim tbl as DataTable = ds.Tables(0).Clone
tbl.columns.add("MyOrder", System.Type.GetType("System.Int32"))
for each r as DataRow in ds.Tables(0).rows
dim row as DataRow = tbl.NewRow
for n as Integer = 0 to tbl.Columns.Count - 2
row(n) = r(n)
next
row("myOrder", ds.Tables(0).rows.Count - tbl.rows.count )
tbl.rows.add( row )
next
GridView1.DataSource = new DataView( tbl, "", "myOrder", Data.DataViewRowState.CurrentRows)
GridView1.DataBind()
といった具合で出来るかと ...
この回答への補足
redfox63さまご回答ありがとうございます。
>GridViewがバインド無しのデータを扱えるようになっていなさそうです
上記ですが、バインド無しのデータを扱うための設定はどのように行えばよろしいでしょうか?
GridViewからDataSetを取得してバインドする?流れでしょうか?
基本的なことなのかもしれませんがよろしくお願い致します。
データの並び順はSQLのORDER BYで指定する予定です。
(提示したソースにORDER BYがもれていました。失礼致しました。)
またご丁寧にソースまでご提示いただきありがとうございました。
今後の参考にさせていただきます、。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) VBA初心者です。 2 2022/10/10 11:52
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
VB.NET DataGridView 縦スクロールバーを常に表示
Visual Basic(VBA)
-
-
4
GridviewとDataGridviewの違い
Microsoft ASP
-
5
ASP.NETでのメッセージ画面を出すには
Microsoft ASP
-
6
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
7
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
8
GridViewに行追加するには?
Microsoft ASP
-
9
DataGridViewに空白がある場合はエラーにしたい
Visual Basic(VBA)
-
10
DataGridViewで指定したセルの値を取得
Visual Basic(VBA)
-
11
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
12
DataTableに入っているデータを全てinsertしたい!(C#)
Microsoft ASP
-
13
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
14
ASP.NetのGridViewで任意の行クリックで選択を行う方法
Microsoft ASP
-
15
DataGridViewのセル編集完了後に値を設定するには
Visual Basic(VBA)
-
16
GridViewからチェックボックスでデータを選択し、次のページへ送信する動作について
Microsoft ASP
-
17
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
18
DataGrdViewに関連付けたデータの更新
C言語・C++・C#
-
19
DataGridViewのフォーカス遷移について
Visual Basic(VBA)
-
20
C# DataTableに最後に追加した行をDataGridView上で選択状態にする方法は?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
コンパイルエラーSubまたは...
-
VBAでページ番号、ページ最終行...
-
スプレッドシート 一括でQRコー...
-
MSFlexGridのデータ表示位置の設定
-
コード側からDataGridの列を追...
-
コンボボックス
-
EXCEL2000のマクロ(ADO)にてCSV...
-
XMLとは?
-
GASでスプレッドシートの一番上...
-
DataGrdViewに関連付けたデータ...
-
クラス内だけでhtmlデータをダ...
-
GridViewにバインドせずにデー...
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
ExcelのINDEXとMATCH関数でスピ...
-
i=cells(Rows.Count, 1)とi=cel...
-
VB.NETで DataRow()を利用して...
-
VBAでセルをクリックする回...
-
Excelのハイパーリンクにマクロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
DataGrdViewに関連付けたデータ...
-
Listviewのデータを上から順番...
-
GASでスプレッドシートの一番上...
-
VBAでページ番号、ページ最終行...
-
.NET SqlDataReader のレコー...
-
GridViewにバインドせずにデー...
-
【ASP.NET MVC】一覧編集画面
-
ASP C# データベースから1行取得
-
MSFlexGridのデータ表示位置の設定
-
コンパイルエラーSubまたは...
-
C# データ配列から画像を作成す...
-
エクセルマクロ小数点桁数
-
DataGridViewで表示に制限をつ...
-
スプレッドシート 一括でQRコー...
-
GridViewを自動的にスクロール...
-
VB DataRepeaterにて条件で表示
-
DBへの重複更新を防ぐ方法について
-
GoogleEarthのKMLファイルでラ...
-
エクセルVBA、数式の入ったセル...
おすすめ情報