• 締切済み

C#のdatatableを配列に挿入し、DataGridViewにバインドする方法

開発環境:VS2005 はじめまして。ゆかりともうします。 今悩んでいるのが、datatableに入っているオブジェクトを配列に挿入し、 文字列編集後にDataGridViewに表示させたいのですが、やり方がわかりません。 お手数ですが、どなたかご教示いただけないでしょうか? コードサンプル) ArrayList array = new ArrayList(); select * from name; using (System.Data.DataTable dataTable = new DataTable()) { this.sqlDataAdapter.Fill(dataTable); <---どのように記述してよいのか分かりません---> } ※select文で抽出されてくる項目は5つございます。 すみませんが、よろしくお願い致します。

  • jmine
  • お礼率38% (10/26)

みんなの回答

回答No.1

こんばんわぁ、Blackwinglsです。 DataGridView は使った事がないのでカンでの回答となりますが・・・・ OleDbConnection cn = new System.Data.OleDb.OleDbConnection(); OleDbDataAdapter da; DataSet ds = new DataSet("NAME"); DataView dv; cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + Application.StartupPath + @"\name.mdb"; da = new OleDbDataAdapter("select * from name", cn); da.Fill(ds, "m_NAME"); dv = new DataView(ds.Tables[0], "","",DataViewRowState.CurrentRows); /* * 加工はdvで行う * dv.Sort = "CustomerCode DESC"; * とか */ dataGridView1.DataSource = dv; 手元にSQLがなかったので、MDBファイルで行ってます。 データの加工は、配列にするよりも DataView のほうが扱いやすくないですか? ではでは~☆

関連するQ&A

  • C# DataGridViewにデータを追加したい。

    C# DataGridViewにデータを追加したい。 DataGridViewにレコードを追加したいのですが、Formのロードイベントで以下コードを実行しています。 // テーブルを作成 DataSet dataSet1 = new DataSet("商品マスター"); DataTable dataTable1 = dataSet1.Tables.Add("製品テーブル"); DataColumn dataClumn1 = dataTable1.Columns.Add("ID", typeof(int)); DataColumn dataClumn2 = dataTable1.Columns.Add("名前", typeof(int)); // テーブルにデータを追加 dataTable1.Rows.Add(new Object[] { 1, name1}); dataTable1.Rows.Add(new Object[] { 2, name2}); dataGridView1.DataSource = dataTable1; としています。 Formにボタンを配置し、ボタンクリック時にテキストボックス[txtProName]のデータを レコード追加したいのですが、記入の仕方がわかりません。 まず、 DataSet dataSet1 = new DataSet("商品マスター"); DataTable dataTable1 = dataSet1.Tables.Add("製品テーブル"); をロードイベントメソッドに記入しているのも問題がありそうなのですが、 良く理解できません。 ボタンイベントでデータを挿入する方法等、記入方法のご教授よろしくお願いいたします。 当方、超初心者なので、出来れば、ソースコードもお願いいたします。m(_ _)m

  • DataGridViewの再表示方法

    VB2005、SQLServer2005環境です。 FormA、FormBの2つのフォームがあり、FormAはDataGridViewでデータを表示し、 FormBはFormAで選択されたデータを呼び出し修正処理を行っています。 質問は、FormBでデータを登録し、FormBを閉じたタイミングで、 FormAのDataGridViewを再描画して最新のデータを表示したいのですが、うまくいきません。 <FormAで記述しているCD> Private Sub BTN_Data表示ボタン_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BTN_Data表示ボタン.Click Dim strsql As String ' レコードを取得し、データグリッドに表示する '---DB接続 '---SQL文を作成して実行する strsql = "SELECT コード, 氏名 FROM TBLA ORDER BY コード Dim comm As SqlCommand = New SqlCommand(strsql, Con) '---データアダプタを生成 Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm) dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey '---データセット Dim ds As DataSet = New DataSet() dataadapter.Fill(ds, "TBLA") '---DataSet を DataGridView control と連結 dgrSyain.DataSource = ds dgrSyain.DataMember = "TBLA" '---DB切断 Call Disconnect() End Sub <FormBで記述しているCD> Private Sub BTN_更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_更新.Click '---FormBの内容を更新する処理----- Me.Close() End Sub 上記の、FormBが閉じる時のイベントで、ResetBindingsを使えばいいのかと思いましたが どこにどう記述すればよいかわかりませんでした。 どうすれば再描画できるでしょうか? ご教授ください。

  • ActionScriptで配列をクリアする方法を教えてください。

    ActionScriptで、オブジェクトを格納した配列をクリアする正しい方法を教えてください。 具体的には、 ・new Array() で配列を生成する。 ・new Object() で生成したオブジェクトを配列に格納する。 ・配列の中身を処理したあと、配列を一度クリアする。 ・配列に別のオブジェクトを格納する。 ような処理をしたいのですが、メモリリークを起こさずに配列をクリアするにはどうしたらいいでしょうか? 例えば、イメージはこんな感じです。(意味のないコードですが) // 配列の生成 var arr = new Array(); // 配列にオブジェクトを格納 for (var i = 0; i < 5; i++) { var obj = new Object(); obj.num = i; } // 配列のクリア arr.length = 0; // クリアした配列に別のオブジェクトを格納 for (var i = 0; i < 5; i++) { var obj = new Object(); obj.num = i * 2; } 上記のコードで、arr.length = 0; で配列をクリアしていますが、これで配列に格納されたオブジェクトが確保したメモリがすべて解放されるでしょうか? あるいは、配列の内容がなくなるまで pop() 等で取り出す等の処理をする必要があるでしょうか? 以上よろしくお願いします。

    • ベストアンサー
    • Flash
  • SQLのデータの一部分を切り取って表示するには?

    visual basicでSQLのデータを表示する際に、そのデータの左二文字だけ切り取ってdatagridviewに表示したいのですが、やり方がわかりません。 単にselect文でdatagridviewに表示するのはできたのですが。 切り取りには(Strings.Right(A, Len(A) - 6))とこの構文を使えばいいのでしょうか? ちなみにdatagridviewは3列あって、そのうちの1列目だけをそうしたいと思います。 普通に表示した場合のコードは以下のようです。     Dim sConn As SqlClient.SqlConnection Dim sda As SqlClient.SqlDataAdapter Dim ds As New DataSet sConn = New SqlConnection () 'SQLへの接続文字列     sda = New SqlDataAdapter("SELECT * FROM         kakeibo",sConn) 'kakeiboから呼び出す条件 sda.Fill(ds) '呼び出す datagridview1.DataSource = ds.Tables(0) '表示

  • DataGridViewの列にコンボボックスを表示する方法

    言語:VB2005 データベース:SQLServer 非接続型のデータアクセスです。 .net勉強中の初心者です。件名の件について悩んでいますのでご教授お願いします。 http://dobon.net/vb/dotnet/datagridview/datagridviewcomboboxcolumn.html 上記HPを参考に勉強しています。 DataGridViewComboBoxColumnを使用する方法ではうまく表示できましたが、 DataSourceプロパティを使用する方法ではうまくできません。 (1)の処理を行うとまず、ID 所属コード 所属名称 がDataGridViewにバインドされます。 そこに(2)の処理を行い 所属名称を コンボボックスに変更したいのですが、所属名称の後に 列名が空白のコンボボックスが新たに追加作成されてしまいます。 そして下記のエラーが発生します。 System.FormatException: DataGridViewComboBoxCell の値が有効ではありません この既定のダイアログを置き換えるには、DataError イベントをハンドルしてください。 いったい何がおかしいのか???です。よろしくお願いします。 '**************************************** '(1)DataGridViewにデータをバインドする '**************************************** strsql = "SELECT ID, 所属コード, t1.名称 as 所属名称 FROM ATBL LEFT OUTER JOIN BTBL ON ATBL.所属 = BTBL.コード ORDER BY ID" Dim comm As SqlCommand = New SqlCommand(strsql, Con) Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm) dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey Dim ds As DataSet = New DataSet() dataadapter.Fill(ds, "テーブル") dgrview.DataSource = ds dgrview.DataMember = "テーブル" '---------------------------------------------------------------------- '(2)DataGridViewにComboBoxを設定する(DataSourceプロパティを使用した例) '---------------------------------------------------------------------- Dim DataSource As New DataTable("DataSource") DataSource.Columns.Add("Value", GetType(String)) DataSource.Columns.Add("code", GetType(Integer)) DataSource.Rows.Add("", 0) DataSource.Rows.Add("小学校", 1) DataSource.Rows.Add("中学校", 2) DataSource.Rows.Add("高校", 3) Dim column As New DataGridViewComboBoxColumn() column.DataPropertyName = "所属名称" column.DataSource = DataSource column.ValueMember = "code" column.DisplayMember = "Value" dgrview.Columns.Add(column)

  • DataGridViewに画像を表示する方法

    言語:Microsoft Visual Studio 2008 データベース:SQL Server 2005 非接続型のデータアクセスです。 現在,上記環境で.netを勉強し始めたところです。 そこでDataGridViewに画像を表示するプログラムを作成したいのですが、うまくいきません。 色々調べたのですが思うようにいかないので,アドバイスをいただければと思います。 <テーブル> ID  画像 1  C\aaa.jpg 2  C\bbb.jpg 3  C\ccc.jpg <画像がない時に表示する画像> C\null.gif 自作したコードは下記の通りです。でもこれだと"null.gif"がセルに表示されるだけで、データ毎に 持っている画像を表示できません。コーディングがそうなので仕方がないのですが… レコード毎に画像を表示する方法を教えて下さい。 Private Sub frmDataGridViewTest_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load   Dim strsql As String   Call DBConnect() '---DB接続   strsql = "SELECT ID, 画像 FROM テーブル ORDER BY ID"   Dim comm As SqlCommand = New SqlCommand(strsql, Con)   Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)   dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey   Dim ds As DataSet = New DataSet()   dataadapter.Fill(ds, "テーブル")   dgrview.DataSource = ds   dgrview.DataMember = "テーブル"   '****************************** 'DataGridViewの列に画像を表示する   '******************************   Dim ImageColumn As New DataGridViewImageColumn()   ImageColumn.Name = "Image"   ImageColumn.ValuesAreIcons = False   ImageColumn.Image = New Bitmap("C\null.gif")   ImageColumn.ImageLayout = DataGridViewImageCellLayout.Zoom   ImageColumn.Description = "イメージ"   dgrview.Columns.Add(ImageColumn)   Call Disconnect() '---DB切断 End Sub

  • J2SDK1.42 ArrayList ソート?

    ソートの仕方を教えてください。 下記のようなデータを年の順でソートしたいのですが。 格データを配列などで扱っているとしたらどのようなプログラムを組めばよいのでしょうか教えてください。 渡辺 50歳 埼玉県 鈴木 21歳 神奈川県 佐藤 40歳 沖縄県 array1 = new ArrayList();'array.get(0)が名前、array.get(1)が歳 array2 = new ArrayList(); array3 = new ArrayList(); などでは、歳をキーにしてSort()する方法はないのでしょうか? ほかによい方法があれば教えてください。 元データはCSVで配列などにいれてソートや絞込みが行えるようにしたいのですが。 以上よろしくお願いいたします。

    • ベストアンサー
    • Java
  • .net データベースへ反映する方法

    <環境> 言語:Microsoft Visual Studio 2008 データベース:SQL Server 2005 非接続型のデータアクセスです。 以前同じ質問をさせていただいたのですが、解決できなかったため、再度投稿させていただきました。 <質問> DataGridViewにデータを表示し、登録、修正、削除を行った後、 更新ボタンを押下でDataGridViewの内容をデータベース(SQLServer)に反映したいのですが、エラーとなり反映できません。 http://japan.internet.com/developer/20070522/26.html を参考にしているのですが、四苦八苦。全然前に進めない状態です。 自作したコードを下記の通りです。いったいどこを直せばよろしいでしょうか?どなたかアドバイスよろしくお願いします。 <エラー>---------------------------------------------------------- "System.ArgumentNullException: 値を Null にすることはできません。  パラメータ名: dataTable  場所 System.Data.Common.DbDataAdapter.Update(DataTable dataTable) -------------------------------------------------------------------- Private Sub frmDataGridViewTest_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load   Dim strsql As String   Call DBConnect() 'DB接続   strsql = "SELECT ID, 名称, 型式 FROM ATBL ORDER BY ID"   Dim comm As SqlCommand = New SqlCommand(strsql, Con)   Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)   dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey   Dim ds As DataSet = New DataSet()   dataadapter.Fill(ds, "テーブル")   dgrview.DataSource = ds   dgrview.DataMember = "テーブル"   Call Disconnect() 'DB切断 End Sub Private Sub BTN_更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_更新.Click   Dim strsql As String   Call DBConnect() 'DB接続   strsql = "SELECT ID, 名称, 型式 FROM ATBL ORDER BY ID"   Dim comm As SqlCommand = New SqlCommand(strsql, Con)   Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)   dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey   dataadapter.Fill(ds, "テーブル")   Dim dt As DataTable = ds.Tables("テーブル")   '<<<DataGridViewコントロールでの変更をデータベースに戻す>>>   Dim sqlCmdBuilder As New SqlCommandBuilder(dataadapter)   sqlCmdBuilder.GetUpdateCommand()   dataadapter.Update(ds.Tables("テーブル"))   Call Disconnect() 'DB切断 End Sub

  • C#でオブジェクトの配列を使う

    開発環境はMicrofoft visual stdio 2005 で開発言語はC#を使い、Windousアプリケーションでプログラミングしているのですが オブジェクトを配列でせんげんし、オブジェクトのメンバを使うとエラーが出てしまいます。ソースコードで説明すると using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 {   public partial class Form1 : Form   {     public class car     {       int a;       public void set(int i)       {         a = i;       }     }     public Form1()     {       InitializeComponent();     }     private void label1_Click(object sender, EventArgs e)     {       car[] bike = new car[1];       bike[0].set(1);//ここでひっかかる     }   } } これをじっこうするとデバックは通るのですが、label1_Clickイベントが発生すると、「NULLの場所を参照しています」という意味のエラーが出てしまいます。 C#はほとんど初心者なので、初歩的なミスだとおもうんですが、 よろしければ御回答をお願いします。

  • C# MySQLのデータを個別に取得する方法

    お世話になります。 C#2010EexpessEditionにて、MySQLのデータを Connector/Netを使用し、SQLで取得する勉強をしています。 サンプルなどを見ながら、DataGridViewに表示するところまでは 行きましたが、一度に表示する仕組みのため、どのように 個別に取得すればいいのかを教えてください。 サンプルは下記の通りです。 ========================================================== //SQL文と接続情報を指定し、データアダプタを作成 MySqlDataAdapter da = new MySqlDataAdapter("SELECT id,name FROM event", conn); //データ取得 da.Fill(dt); //データ表示 dataGridView1.DataSource = dt; ========================================================== daの中の、該当するデータの一行目のnameの値だけ 取り出したいのですが、どのような記述にすれば 良いでしょうか。 何卒よろしくお願いいたします。

専門家に質問してみよう