|
■No7855 (ぼん さん) に返信
> 以下のコードを書いてみたのですが、DisplayMember ではなくValueMember の値がコンボボックスに出てしまっています。
そのまま試してみましたが、特に問題なく表示されましたけれども…。
どこか他の部分に問題があったりはしませんか?
using System;
using System.Data;
using System.Windows.Forms;
public class SampleForm : Form
{
[STAThread]
static void Main()
{
//Application.EnableVisualStyles();
Application.Run(new SampleForm());
}
DataTable sampleData;
DataTable CLTTable;
DataGridView dgv;
SampleForm()
{
// コンボボックス列のデータ
CLTTable = new DataTable("K_CLT");
CLTTable.Columns.Add("CLTN", typeof(string));
CLTTable.Columns.Add("CLTK", typeof(int));
CLTTable.Rows.Add("%", 0);
CLTTable.Rows.Add("円", 1);
CLTTable.Rows.Add("倍率", 2);
// データ本体
sampleData = new DataTable("Sample");
sampleData.Columns.Add("ID", typeof(int));
sampleData.Columns.Add("CLTKBN", typeof(int));
sampleData.Rows.Add(1, 0);
sampleData.Rows.Add(2, 1);
sampleData.Rows.Add(3, 2);
sampleData.Rows.Add(4, 0);
sampleData.Rows.Add(5, 1);
sampleData.Rows.Add(6, 2);
// DataGridView への手動割当
DataGridViewTextBoxColumn txtID = new DataGridViewTextBoxColumn();
txtID.DataPropertyName = "ID";
txtID.ReadOnly = true;
txtID.HeaderText = "ID";
DataGridViewTextBoxColumn txtCLT = new DataGridViewTextBoxColumn();
txtCLT.DataPropertyName = "CLTKBN";
txtCLT.HeaderText = "名";
DataGridViewComboBoxColumn cboCLT = new DataGridViewComboBoxColumn();
cboCLT.DataPropertyName = "CLTKBN";
cboCLT.HeaderText = "値";
cboCLT.DataSource = CLTTable;
cboCLT.ValueMember = "CLTK";
cboCLT.DisplayMember = "CLTN";
dgv = new DataGridView();
dgv.EditMode = DataGridViewEditMode.EditOnEnter;
dgv.Dock = DockStyle.Fill;
dgv.Columns.Add(txtID);
dgv.Columns.Add(cboCLT);
dgv.Columns.Add(txtCLT);
dgv.AllowUserToAddRows = false;
dgv.Columns[txtID.Index].Width = 60;
dgv.Columns[cboCLT.Index].Width = 60;
dgv.Columns[txtCLT.Index].Width = 60;
DataGridViewCellStyle style = dgv.DefaultCellStyle;
style.SelectionBackColor = style.BackColor;
style.SelectionForeColor = style.ForeColor;
dgv.DataSource = sampleData;
dgv.DataError += delegate(Object o, DataGridViewDataErrorEventArgs a) { a.Cancel = true; };
Controls.Add(dgv);
}
}
|