0

私はdatagridviewを持っています、このdatagirdviewに、2つのバインドされていない列を追加しました。1つはコンボボックスで、もう1つはテキストボックスタイプの列です。これに加えて、いくつかの行のデータテーブルがあります。

データテーブルを使用してグリッドデータソースを設定しています。コンボボックスコントロールに値を追加しようとしています。3つの値(トラック、飛行機、船)が表示されます。

グリッドが読み込まれると、ストアは表示されますが、コンボボックスに値がありません。コンボボックスのデータ列を作成し、データテーブルをバインドして値を追加するなど、さまざまな方法を試しました。また、デザイナーとコードの両方で、コンボボックスにcolumn.itemsを追加してみました。値を取得することはありません。

実験として、以下のコードで新しい列を追加しようとしていますが、2番目の列にも値が表示されません。

DataGridViewComboBoxColumn dgvcbc = new DataGridViewComboBoxColumn();
        DataTable dt = new DataTable();
        dt.Columns.Add("Media", typeof(string));
        dt.Rows.Add("Truck");
        dt.Rows.Add("Car");
        dgvcbc.DataSource = dt;
        dgvcbc.DisplayMember = "Media";
        dgvcbc.ValueMember = "Media";
        this.grdDestShops.Columns.Add(dgvcbc);
4

2 に答える 2

0

これで問題が解決すると思います..

namespace activator
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
       {
        DataTable dt = new DataTable();
        dt.Columns.Add("Media", typeof(string));
        dt.Rows.Add("Truck");
        dt.Rows.Add("Car");            
        ComboBox combo = new ComboBox();
        List<string> media=(from x in dt.AsEnumerable()
                            select x.Field<string>(0)).ToList();
        combo.DataSource = media;
        dataGridView1.Controls.Add(combo);           
    }
  }
}
于 2012-12-14T12:26:42.657 に答える
0

あなたのコードは新しい列を追加しています! デザイン モードで ComboBox 列を追加した場合、FindControl関数を使用してそれを見つけてバインドしてみませんか?

于 2012-12-14T11:08:05.983 に答える