| ■No64466 (shu さん) に返信
> ■No64463 (take6 さん) に返信
>
> DataSource ・・・ コンボボックスに設定するリスト
> DisplayMember ・・・ コンボボックスに表示するメンバ
> DataPropertyName ・・・ DataGridViewに割り当てられているデータのどの項目を該当列に割り当てるか
>
>
返事が遅れてすいません。
DataGridViewから、コントロールをtableLayoutPanelに動的生成して各コントロールにデータをバインドしてみようと
試していました。
結局1日やってDataGridViewでいう1レコードの関連付けを持たせることが難しく、DataGridViewに戻ってきました。。
コンボボックス列の表示は未だ(コレクション)です。。
コンボボックス列を選択すると、WindowsFormsApplication1.Dataが2つ入っています。
2行とも同じでしたので、サンプルデータの「"tokyo"〜」のリストと「"kanaawa"〜」のリストが
コレクションとしてセルに入っているようです。
データバインドはあきらめて、Itemsで1行毎にデータを入れていくしかないのでしょうか。
現状のコードは以下です。テスト用にコンボボックス列だけにしました。
public partial class Form1 : Form
{
BindingList<Data> dataList = new BindingList<Data>();
Data data;
public Form1()
{
InitializeComponent();
data = new Data(new List<string> { "tokyo", "osaka", "kyoto" });
dataList.Add(data);
data = new Data(new List<string> { "kanagawa", "nagoya", "ishikawa","ehime" });
dataList.Add(data);
BindingSource bs = new BindingSource();
bs.DataSource = dataList;
DataGridView dgv = new DataGridView();
dgv.DataSource = bs;
dgv.Dock = DockStyle.Fill;
dgv.AutoGenerateColumns = false;
DataGridViewComboBoxColumn comboBoxColumn = new DataGridViewComboBoxColumn()
{
DataSource = bs,
DataPropertyName = "CallList",
DisplayMember = "CallList",
HeaderText = "サンプルリスト",
Name = "ComboBox",
Width=300,
};
dgv.Columns.Add(comboBoxColumn);
this.Controls.Add(dgv);
}
}
class Data
{
private List<string> _list { get; set; }
public Data(List<string> list)
{
_list = list;
}
public List<string> CallList
{
get { return _list; }
set { _list = value; }
}
} |