
下記のようなロジックを動かそうとしていますが、うまくいきません。
「データベースからinteger型の値を取得して、それをreadメソッドでlistに一旦格納し、For Eachで1つずつGridviewに追加していく。」
エラー内容でググっても良くわからなかったので、解決策がわかる方がいましたらご助言お願い致します。。
*DBから値を取得し、listに格納するところは問題なく動いていますが、Gridviewに追加するところでこけます。
エラー箇所:GridView1.Columns.Add(item)
エラー内容:「型 'Integer' の値をを 'System.Web.UI.WebControls.DataControlField' に変換できません。」
Dim list As List(Of Integer) = New List(Of Integer)
Dim result As Integer = Byte.MinValue
Do While testReader.Read()
result = Convert.ToInt32(testReader("price"))
list.Add(result)
Loop
For Each item In list
GridView1.Columns.Add(item)
Next
No.2ベストアンサー
- 回答日時:
☆確認
・ほんとにカラムでいいのですか?
・VS2008Pro+VBで試したソースを書いておきます。
・ImportsはSystem.DataとSystem.Web.UI.WebControlsです。
☆サンプルソース
' テストデータ作成(readerじゃないけど・・・)
Dim dt As DataTable = New DataTable()
Const fld As String = "price"
dt.Columns.Add(fld)
dt.Columns(fld).DataType = GetType(Integer)
For i As Integer = 0 To 3
Dim row As DataRow = dt.NewRow()
row(fld) = i
dt.Rows.Add(row)
Next
' 本題(とりあえず題名通りListに追加)
Dim list As List(Of Integer) = New List(Of Integer)
Dim result As Integer = Integer.MinValue
For Each row As DataRow In dt.Rows
result = row(fld)
list.Add(result)
Next
' カラム作成
For Each item In list
Dim field As BoundField = New BoundField()
field.HeaderText = item.ToString()
GridView1.Columns.Add(field)
Next
' 表示されるか確認用
GridView1.DataSource = dt
GridView1.DataBind()
No.1
- 回答日時:
☆まず確認(間違いないと思うけど・・・)
・ASP.NET+VBですよね?
・Frameworkのバージョンも出来れば提示してほしい。(ジェネリックリスト使ってるから2.0以上だろうけど・・・)
☆エラーの内容
GridView1.Columns.Addの第1引数は、DataControlFieldです。
#実際にはDataControlFieldクラスはMustInheritですので以下のDataControlFieldを継承したクラスを使用します。
#BoundField、ButtonField、CheckBoxField、CommandField、HyperLinkField、ImageField、TemplateField
☆回答
・カラムを追加しているように見受けられます。
・ASP.NETではGridViewをコード上でカラム追加や行追加はあまりおすすめ出来ません。DataSetやDataTableをDataSourceにバインドする方向で検討されてはいかがでしょうか?
一応追加するのに参考のURLを↓に書いておきます。
参考URL:http://social.msdn.microsoft.com/Forums/ja-JP/vw …
この回答への補足
ご助言ありがとうございます。
開発環境:VisualWebDeveloper2008ExpressEdition、vb, Framework3.5
通常はDataSetを使用するのですが、今回はDataSetなどは使用せずコード上でGridViewにデータを追加しなければいけないため、表示させる方法がまったくわかりません。。
【追加コード】
Dim NewField As New BoundField
For Each item In list
listに格納されたinteger型の値(item)をNewFieldに代入するロジック
GridView1.Columns.Add(NewField)
Next
という形のロジックになるんでしょうか?listに格納されたinteger型の値(item)をNewFieldに代入するロジックはどう書けばいいのでしょうか?見当はずれだったらすみません。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数式は残し値をクリアするマク...
-
UserForm1.Showでエラーになり...
-
HTMLソースが表示のページのも...
-
ACCESS VBAのSplit()関数の使用...
-
mailstorehomeのエクスポートで...
-
objectタグを使用してEXCEL出力
-
ISNAとISERRORの使い方の違い
-
コンボボックスの特定項目だけ...
-
LaTeXのエラーについて(コンパ...
-
VBAのエラーについて
-
CSV出力時、件数によりエラーと...
-
スクリプト エンジンの例外が発...
-
MDBへレコード挿入中にエラーが...
-
教えて下さい
-
配列数式の解除
-
Libre office マクロ
-
マクロを組んで作業するのは実...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
【マクロ】【画像あり】4つの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
【VBA】ワークブックを開く時に...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
On ErrorでエラーNoが0
-
VBA データ(特定値)のある最...
-
インポート時のエラー「データ...
-
マクロで"#N/A"のエラー行を削...
-
VBAのリストボックスで、横スク...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
「実行時エラー '3167' レコー...
-
実行時エラー 438 の解決策をお...
-
【VBAエラー】Nextに対するFor...
-
ACCESSで値を代入できないとは?
-
Filter関数を用いた結果、何も...
-
文字列内で括弧を使うには
-
【VB.NET】 パワポ操作を非表示で
-
レコード登録時に「演算子があ...
おすすめ情報