• 締切済み

C# DataGridViewで列名を変更したい。

はじめまして。 WindowsXP,VisualStudio2005,C#にて開発を行っています。 リストをDataGridViewのデータソースにセットし、 表示しています。 表示されると、 アルファベット順でかつ、 リストの項目名が、 DataGridViewの列名になります。 列名と並び順をプログラム上で変更するにはどうしたらよいのでしょうか? メインソース List<MasterItem> masterList; MasterManager mng = new MasterManager(); // データの取得 masterList = mng.GetList(); // データソースのセット this.MasterGrid.DataSource = masterList; --------------- GetListメソッド List<MasterItem> list = new List<MasterItem>(); MasterItem item; item = new MasterItem(); item.Code = 1234567; item.XXXX = "XXXXX";

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

DataGridViewのColumnsコレクションを自前で設定してやればいいのでは ・・・ どのような現象に見舞われていて、どう対処したいのがご質問からは読み取れません 現象を例示するなど具体化しましょう ID CODE NAME と並べたいが CODE ID NAME になってしまうなど ・・・

jun_kaon
質問者

お礼

>DataGridViewのColumnsコレクションを自前で設定してやればいいのでは ・・・ そのとおりでした。 Name、DisplayIndexを使って設定できました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • DataSetの内容がDataGridViewに反映されない

    現在、VB2005でアプリケーションの開発をしているのですが DataSetの内容がDataGridViewに反映されなくて困っています。 表示させたいデータをデータセットにとってくるところは問題ないようで 1回目は上手く表示されるのですが、データセットの中身を変更して セットし直しても表示が変わりません。 以下がソースを抜き出したものになります。 Grid.DataSource = Nothing Grid.DataMember = Nothing Grid.DataSource = DataSet Grid.DataMember = "M_kbn" よろしくお願いします。

  • [C#] DataGridViewでコンボボックスでの変更がdataTableに反映されません

    DataGridViewへのコンボボックス利用で躓いております。 DataGridViewのAutoGenerateColumnsをfalseにし、dataGridView.DataSourceにデータベースから読み込んだデータテーブルを指定しています。 次にdataGridViewにDataGridViewComboBoxColumnを追加し、DataPropertyNameにコンボボックスに対応させたい データテーブルのCaptionを指定することで、データテーブルとコンボボックスを関連付けています。 実行後の表示は想定通りなのですが、コンボボックスでアイテムを選択するとdataGridView上では値が更新されて、データテーブルには変更が反映されていません。 ちなみにコンボボックスでは、ValueMemberとDisplayMemberを設定し、DataGridView上ではstring、 内部的にはlongでデータ管理を行いたいと思っています。 どうにも解決方法が見いだせないので、こちらに質問させていただきました。 ソースを貼りつけるのでご指摘をお願いします。 利用しているデータベース |ID|ペットID| |1 |1| |2 |1| |3 |3| 以下ソースでは上記データベースのデータテーブルをpdtとしています。 コンボボックスのデータテーブル作成 DataTable comboTable = new DataTable(); comboTable.Columns.Add("ID", typeof(long)); comboTable.Columns.Add("NAME", typeof(string)); string[,] rowDataArray =      {{"1", "犬"},      {"2", "猫"},      {"3", "魚"}}; for(i=0;i<rowDataArray.GetLength(0);i++) {    DataRow row = comboTable.NewRow();    row["ID"] = rowDataArray[i, 0];    row["NAME"] = rowDataArray[i, 1];    comboTable.Rows.Add(row); } comboTable.AcceptChanges(); //コンボボックスを作成しコンボボックステーブルをバインド DataGridViewComboBoxColumn cbc = new DataGridViewComboBoxColumn(); cbc.DataSource = comboTable; cbc.DisplayMember = "NAME"; cbc.ValueMember = "ID"; cbc.DataPropertyName = pdt.ペットIDColumn.Caption; cbc.DisplayStyleForCurrentCellOnly = true; //dataGridViewにデータテーブルをバインド dataGridView1.AutoGenerateColumns = false; dataGridView1.DataSource = pdt; dataGridView1.Columns.Add(cbc); これを実行すると |犬| |犬| |魚| とdataGridViewに表示され、コンボボックスでは、犬、猫、魚が選べます。 一行目において、コンボボックスから猫を選択するとdataGridViewは下記のようになるのですが |猫| |犬| |魚| この後ブレークよりデータテーブルとdataGridViewを見ると pdt[0][0] = 1 dataGridView1.Rows[0].Cells[0].Value = 2 となっており、dataGridViewの値は更新されているのに、データテーブルでは更新されていませんでした。 今まで、dataGridView上でダブルクリックし、値を直接書き換えていたらデータテーブルの値も更新されていたのですが、 コンボボックスを使うようにしたら更新されなくなりました。 皆様、解決方法を教えていただけますでしょうか。

  • 【datagridview のDataSourceでdatagridv

    【datagridview のDataSourceでdatagridviewにデータを表示して、URLをハイパーリンクで表示する。】 いつもお世話にになります。 さて、DBにテーブルがあり、それにはひとつのカラムしかないと仮定します。そのカラムの内容はURL(例:http://www.okwave.jp)です。そのテーブルをDataSourceに設定してdatagridviewに表示する事はできました。しかし、このURLはハイパーリンクではないので、クリックしてもブラウザに自動的に表示されません。 どうにか、以下の方法で、セルの文字列ををハイパーリンクとして設定をする事ができましたが、どうやらこれの方法は新しくカラムを追加をしてしまうようです。(.addメソッドでカラムを追加してするようです。)自分が実現したいのでは、すでにあるカラムをハイパーリンクにしたいのです。 DataGridViewLinkColumn dgvlc1 = new DataGridViewLinkColumn(); dgvlc1.DataPropertyName = "link"; dgvlc1.HeaderText = "URL"; dgvlc1.Width = 400; dataGridView1.Columns.Add(dgvlc1); DataSourceを使ってdatagridviewにデータを表示した後、ハイパーリンクにする方法はあるのでしょうか? よろしくお願い致します。

  • Datagridviewのコンボボックスにつきまして

    vb2005です。 DataGridViewコントロールのデータセットにデータベースのテーブルをセットしています。 そのDataGridViewの1列目にコンボボックスを設定し、 そのコンボボックスのデータセットにも別のテーブルをセットしたいのです。 Dim dAdp As OleDb.OleDbDataAdapter Dim dSet As New DataSet Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\DB.mdb;") dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM 商品", cn) dAdp.Fill(dSet, "t_商品") DataGridView1.DataSource = dSet.Tables("t_商品") dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM 品種", cn) dAdp.Fill(dSet, "t_品種") Dim col As System.Windows.Forms.DataGridViewComboBoxColumn = DataGridView1.Columns(1) ・・・・★ col.DataSource = dtSet.Tables("t_品種") col.DisplayMember = "品種名" col.ValueMember = "品種コード" 上記のように記述しているのですが、★の部分で、下記のエラーになります。 型 'System.Windows.Forms.DataGridViewTextBoxColumn' のオブジェクトを型 'System.Windows.Forms.DataGridViewComboBoxColumn' にキャストできません データソースを指定したDataGridViewの列にはコンボボックス等の設定は 出来ないのでしょうか?

  • C#のDataGridViewにCheckBox

    VC#2013でソフトを作成しています. xmlに保存したデータをform上のdataGridViewに表示させたいと考えています. xmlのデータは下記のようになります. <?xml version="1.0" standalone="yes"?> <setting> <test> <No>1</No> <直径>43.1</直径> <全長>43.2</全長> <可>true</可> </test> </setting> xmlを読み込んでfrom上のdataGridViewに表示させるコードは下記のようになります. setting.ReadXml(Directory.GetCurrentDirectory() + "\\setting.xml"); dataGridView1.DataSource = setting; dataGridView1.DataMember = "test"; 上記コードを実行し、<可>の列だけ、checkBoxにしたいと考えていますが、 trueと表示されてしまいます. 多分ですが、string型であるからだと思いますが、どのようにすればcheckBoxを表示することが出来ますでしょうか? 何卒、ご教授宜しく御願い致します.

  • vb.net datagridviewの列位置変更

    vb.net datagridviewの列位置を変更する方法を教えて下さい。 データグリッドビューにDataTable(DBから抽出したデータ)を割り当てました。 DataGridView1.DataSource = DataTable1 ここに、カラムを追加しました Dim column As New DataGridViewButtonColumn() '列の名前を設定 column.Name = "Button" '全てのボタンに"詳細閲覧"と表示する column.UseColumnTextForButtonValue = True column.Text = "詳細閲覧" 'DataGridViewに追加する DataGridView1.Columns.Add(column) この追加したカラムを一番左に表示したいです。

  • DataGridViewに関して

    開発:Visual Basic 2008 考え方の質問になってしまうかもしれませんが教えて下さい。 Datagridviewを用いて、データの入力をさせたいと考えています。 但し、入力だけでなく画面にある表示ボタンを押した際には、テーブルに格納されている データを検索しに行き、その内容を表示させたいと考えています。 Datagridviewはフォームに貼り付け、各項目を一つずつ作成してあります。 しかし、この場合、以下のような記述をすると(そもそも記述が違うかと思われますが・・・)、 もともと作成してある項目(列)にデータがセットされず、新規で列を作ってしまいます。 《記述内容》 '変数の宣言 Dim dtSet As DataSet = New DataSet("PRODUCTS") Dim dtTable As DataTable 'データセットにテーブルを追加する dtTable = dtSet.Tables.Add("A_TBL") 'テーブルにフィールドを追加する '.Add("フィールド名", フィールドの型)で追加します dtTable.Columns.Add("AAA", Type.GetType("System.String")) Dim data_row As DataRow = dtTable.NewRow() data_row("AAA") = PIN_AAA dtTable.Rows.Add(data_row) 'DataGridにデータを表示する G_BBB.DataSource = dtSet.Tables(0) そもそもDatagridviewを用いて、入力や表示を行うにはどのような形にするのが 良いのでしょうか? Datasetとか使う? 教えて頂きたいと思います。 よろしくお願いします。

  • DataSetの複数テーブルをひとつのDataGridViewでまとめて出したい

    こんにちは、いつも参考にさせていただいています。 VS2005のC#で制作しているのですが、 ひとつのデータセットの中に3つのテーブルがあります。 そのテーブル全てをデータグリッドビューでだしたいのですが、 ひとつのテーブルしか上手に出ません。 3つのテーブルをひとつのグリッドビューに出す方法を教えてください。 現状は以下のコードで一つのテーブルだけ表示しています。 dv = new DataView(dataset.Tables["data"], "", "", DataViewRowState.CurrentRows); dataGridView1.DataSource = dv;

  • DataGridViewで再表示すると変更不可にならない

    Visual Basic 2008 にて開発していますがDataGridViewについて質問させて下さい。 DataGridViewのデータ表示は、検索結果をDataTableに格納し、 そのDataTableをDataSourceに設定する方法で行っています。 DataGridView内にはチェックボックスがあり、 そのチェックボックスは条件によってReadOnly = Trueにて変更不可にして表示しています。 最初の表示は問題なく条件に合えば ReadOnly = Trueにて変更不可になり表示してくれますが、 再表示(DataTableをDataSourceに再代入)すると条件に合っているのにReadOnly = Trueが効かず、 チェックボックスが変更可能となって表示してしまいます。 ReadOnly=True にする方法は、DataGridView の件数を取得し、 jjCnt = 0 Do Until jjCnt >= ggCnt   If DataGridView1.Rows(jjCnt).Cells(88).Value.ToString() = "1" Then DataGridView1.Rows(jjCnt).Cells(0).ReadOnly = True End If jjCnt = jjCnt + 1 Loop で行っています。 何故、再表示だと変更不可にならないのか解らずご教授願いたく宜しくお願い致します。

  • DataGridViewについて

    DataGridViewにデータセットのテーブルを全件表示するのは簡単に出来ますが、10件だけ表示することって出来るのでしょうか? やり方がわからなくて困っています。 SQL文で絞ってデータセットにセットするやり方以外であれば 教えてください。