• ベストアンサー

DataGridのバインドで苦しんでおります

DataAdapterを使わずに仮想テーブルとバインドさせる事は可能なのでしょうか?(DBの接続が常時接続なので…) イメージなのですが、 (1)仮想テーブル作成 (2)DataGridと(1)をバインド 漠然とした質問で申し訳ありません。宜しくお願いいたします。

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

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

可能です。 ・DataTableオブジェクト.Add ・DataColumnオブジェクト.Add を組み合わせて、データビューを作成しましょう。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load   Dim l_dtbデータテーブル As New DataTable()   Dim l_drwデータロウ As DataRow   Dim i As Integer   l_dtbデータテーブル.Columns.Add("文字型", System.Type.GetType("System.String"))   l_dtbデータテーブル.Columns.Add("整数型", System.Type.GetType("System.Int32"))   l_dtbデータテーブル.Columns.Add("長整数型", System.Type.GetType("System.Int64"))   For i = 1 To 26     l_drwデータロウ = l_dtbデータテーブル.NewRow     l_drwデータロウ.Item("文字型") = Chr(48 + i) & Chr(64 + i)     l_drwデータロウ.Item("整数型") = i * 1000     l_drwデータロウ.Item("長整数型") = i * 1000000     l_dtbデータテーブル.Rows.Add(l_drwデータロウ)   Next   Dim l_dvwデータビュー As DataView = New DataView(l_dtbデータテーブル)   DataGrid1.DataSource = l_dvwデータビュー End Sub

manihei
質問者

お礼

ありがとうございます。早速トライしてみます。

関連するQ&A

  • DataGridの再表示について

    C#にてアプリを作成しているのですが、DataGridを使用してDBからデータを引っ張ってきているのですが、条件を変えて再検索を行ったところ次のメッセージが出てきました。「このデータ グリッドのテーブル スタイル コレクションには既に同じマップ名のテーブル スタイルが含まれています。」この意味するところ、DataGridにかかわるどこかの部分を一度クリアさせなければならないと思っていますが、どこをクリアすればよいかわからないので、お尋ねいたしました。 よろしくお願いいたします。 また、ソースを載せようと思いましたが、ちょっと長いので、リクエストがあったら、載せようかとと思います。

  • DBを使わないDataGrid

    初歩的な質問ですが、お願いします。 C#.NETで、DBに接続しない使い方で、行数可変なDataGrid的なものを使いたいのですが、ネットや本を見ていると、DataGridはDB接続やASPでの使うことが多いようです。 VB6には以下のようなフレキシブルグリッドというのがあるそうですが、.NETではどうでしょうか。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1043545

  • ASP.NET DataGridのハイパーリンク

    以下のようにASP.NETにて、DataGridへデータをセットし表示したのですが、さらにヘッダーの項目名(名前、年齢)をハイパーリンクにし、クリックして別の詳細ページへ飛ぶなどの動作をさせたいと考えています。 いろいろ調べましたが、記述方法がわかりません。 どなたかアドバイスお願いします。 ---------------------------------------------------- Private Sub Page_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) ' DataGridへバインドする If Not Me.IsPostBack Then ' 独自のDataAdapterを作成する Dim da As New SqlDataAdapter( _ "SELECT fullname as 名前, age as 年齢 FROM person", _ Me.SqlConnection1) Dim ds As New DataSet ' データ検索 da.Fill(ds) ' DataGridへバインド Me.DataView1 = New DataView(ds.Tables(0)) Me.DataBind() End If End Sub

  • datagrid内にdatagridもしくはdatalistをネストしたい

    こんばんは。 現在Visual Studio .NET 2003 でASP.NET + VB.NETの ウェブフォームを作っています。 たとえばデータベースにtable1とtable2があり idをjoinさせてdatagridにバインドすると id......name.........order ------------------------------- 1.......abc...........a ------------------------------- 1.......abc...........b ------------------------------- 2.......def...........a ------------------------------- 3.......hij...........a ------------------------------- 3.......hij...........b ------------------------------- 3.......hij...........c ------------------------------- 4.......klm...........b ------------------------------- となるのですが id......name........order ------------------------------- 1.......abc...........a ..........................b ------------------------------- 2.......def...........a ------------------------------- 3.......hij...........a ..........................b ..........................c ------------------------------- 4.......klm...........b ------------------------------- このように表示させたいためdatagridを ネストさせるしかないかと思うのですが、 うまくいきません。 http://www.atmarkit.co.jp/fdotnet/dotnettips/132nesteddg/nesteddg.html このサイトを参考にしてC#のソースコードをVBに 変えてみましたがそれもうまくいきません。 どの方法が一番いいのか、datagridにdatalistを ネストさせることが出来るのかもわからず 困っています。 datagridをどうすればネストして表示できるのか、 よりいい方法があるのか、アドバイスをお願いいたします。

  • 「バインド」、「ドッキング」 言葉の使い方

    アクセスで フォーム→新規作成→オートフォーム(テーブルを選択) をすると、テーブルに紐付けられてフォームが作成されますが、 このことを テーブルとフォームが「バインド」した、 もしくは「ドッキング」した と言いいますか?

  • DataGridのつかいかた

    VB.NETのDataGridでアクセスのデータベースに接続しています。ところで、DataGridを使ったとき、たとえば、 DataSet11.Tables(1)...... といったように、Tables()にはインデックスとして数字を入れますが、テーブルはユーザの数だけどんどん増えていったり減ったりと流動的なため、インデックスではなく、ユーザが入力したID(たとえば"040736"など)を、直接いれるため、 DataSet11.Tables(TextBox1.text)...... というふうにしましたが、エラーで、「オブジェクト参照がオブジェクトインスタンスに設定されていません」と出てしまいました。教えてください!

  • VB6 DBと連結しないDataGrid

    VB6の標準機能で、(行数可変の)一覧表示をするために、DataGridを使おうと思ったのですが、 どのサンプルを見ても、DBから取得したRecordSetをBindする方法しか載っていません。 そもそもVB6のDataGridとは、プログラム中でDB以外の情報を、挿入したり削除することって、出来ないのでしょうか? (行オブジェクトをAddするようなイメージです) よろしくお願いします。

  • DataGridについて

    VisualBasicでデータベースを製作中です。 [開発環境] OS:WinXP Visual Basic 6.0 DataBase:Access2000 DataGridとAccess2000を接続して表示させる事は出来たのですが 表示結果を細工したく悩んでいます。 Access2000側で番号を主キーに設定しているのですが テーブルによって表示される並びが違っています。 これをコントロールして昇順とか降順とかに出来ないでしょうか? もちろんAccess2000では思惑通り並んでいます。 プロパティでTopRowを指定しましたがちょっと無理でした。 お忙しいところおてすうですがどなたかヒントを頂ければ幸いです。

  • DataGridの中身をDataSetにテーブルとして保存する方法 (初心者)

    VB.NET2003でDataSetにテーブルを作成して、データベース(SQLServer2000)にあるテーブルを引っ張ってきて、そのDataSetのテーブルをDataGridに渡して、表示までは出来たのですが、DataGridの中身を変更した後、違うDataSetに保存する方法が分かりません。どなたか教えてください。

  • VB2008・DataGridの表示について

    フォーム上にDataGridを設置してsqlcompactで作られたテーブルのデータを表示しようとして 以下のソースを実行すると、エラーになり表示できませんでした。 もし、原因がわかるかたがいらっしゃいましたら教えてくださると助かります。 表示するにあたり、テーブルの特定のカラムだけ表示して、ヘッダーを編集したい。 テーブルの全レコードではなくて対象レコードのみを表示 Dim cn As New System.Data.SqlServerCe.SqlCeConnection Dim SQL As System.Data.SqlServerCe.SqlCeCommand Dim db_sql As String ' テーブルスタイルを生成する Dim dgStyle As DataGridTableStyle = New DataGridTableStyle() dgStyle.MappingName = "表示用テーブル" ' 列スタイルを生成し、プロパティを設定する Dim col(4) As DataGridTextBoxColumn col(0) = New DataGridTextBoxColumn() col(0).HeaderText = "商品コード" col(0).MappingName = "商品コード" col(0).Width = 50 col(1) = New DataGridTextBoxColumn() col(1).HeaderText = "商品名" col(1).MappingName = "商品名" col(1).Width = 100 ' 列スタイルをテーブルスタイルに追加する dgStyle.GridColumnStyles.Add(col(0)) dgStyle.GridColumnStyles.Add(col(1)) ' テーブルスタイルをグリッドに追加する Me.DataGrid_Display.TableStyles.Clear() Me.DataGrid_Display.TableStyles.Add(dgStyle) 'DBのパスをセットしてオブジェクト化 cn.ConnectionString = "Data Source=" & DB_PATH & ";Password=" & DB_PASSWORD & ";Persist Security Info=True;" SQL = cn.CreateCommand 'データグリッドを表示する Dim dbadp As System.Data.SqlServerCe.SqlCeDataAdapter Dim dbtabl As DataTable Dim aa As DataSet db_sql = "SELECT syohinno, syohinryaku, suryo1, suryo2, suryo3 FROM porsj05_tempo ORDER BY date DESC" dbadp = New SqlCeDataAdapter(db_sql, cn) dbtabl = New DataTable dbtabl.Locale = System.Globalization.CultureInfo.InvariantCulture dbadp.Fill(dbtabl) Me.DataGrid_Display.DataSource = dbadp Me.DataGrid_Display.Refresh() エラー箇所 Me.DataGrid_Display.DataSource = dbadp エラー内容 Complex DataBinding は IList または IListSource のどちらかをデータソースとして受け入れます。 'System.ArgumentException' の初回例外が System.Windows.Forms.dll で発生しました。