none
datagridview combobox RRS feed

  • Вопрос

  • У меня есть combobox в datagridview, уже вставленый.

    Как мне добавлять данные в него, разные для каждой ячейки?

    Пытался засунуть туда обьект combobox с данными, но не получилось, почему?

    • Перемещено I.Vorontsov 27 мая 2010 г. 12:54 (От:Visual C#)
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 21:42 MSDN Forums consolidation (От:Разработка Windows-приложений)

Ответы

  •     private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
          if (this.dataGridView1.CurrentCell.GetType() == typeof(DataGridViewComboBoxCell))
          {
            ComboBox mycombo = e.Control as ComboBox;
            BindingSource myBindingSource = new BindingSource(this.expert8DataSet, "reg1999");       
            myBindingSource.Filter = "Район ='" + this.dataGridView1.CurrentRow.Cells[this.dataGridView1.CurrentCell.ColumnIndex].Value.ToString() + "'";
            mycombo.DataSource = myBindingSource;
            mycombo.DisplayMember = "Район";
            mycombo.ValueMember = "Район";
          }
        }
    
    Как то так.
    • Помечено в качестве ответа I.Vorontsov 18 мая 2010 г. 7:12
    Модератор
  •       string [] _val = {"Один","Два","Три"};
          this.comboBox1.DataSource = _val;
    
    Вот такой код на простом комбобоксе работает.
    Ошибка может вылетать, если в массиве, который ты подсовываешь в качестве датасорса комбобоксу нет значения текущей ячейки.
    • Помечено в качестве ответа I.Vorontsov 18 мая 2010 г. 7:11
    Модератор

Все ответы

  • Мало информации.

    Кто вставлял combobox в datagridview?

    WinForm или WPF?

    Данные должны быть разными для каждой ячейки или для каждой колонки?

    Каким образом и куда именно "Пытался засунуть туда обьект combobox с данными"?

    Модератор
  • Я выбрал в datagridview одну колонку типа combobox .

    WinForm.

    В колонке с combobox могут быть разные данные.

    Програмно задавал свойство Value combobox'а.

  •     private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
          if (this.dataGridView1.CurrentCell.GetType() == typeof(DataGridViewComboBoxCell))
          {
            ComboBox mycombo = e.Control as ComboBox;
            BindingSource myBindingSource = new BindingSource(this.expert8DataSet, "reg1999");       
            myBindingSource.Filter = "Район ='" + this.dataGridView1.CurrentRow.Cells[this.dataGridView1.CurrentCell.ColumnIndex].Value.ToString() + "'";
            mycombo.DataSource = myBindingSource;
            mycombo.DisplayMember = "Район";
            mycombo.ValueMember = "Район";
          }
        }
    
    Как то так.
    • Помечено в качестве ответа I.Vorontsov 18 мая 2010 г. 7:12
    Модератор
  • Хороший пример, но как програмно задавать mycombo.DataSource например если у меня есть масив string[] со значениями которые нужно поместить в ComboBox?

  •       string [] _val = {"Один","Два","Три"};
          this.comboBox1.DataSource = _val;
    
    Вот такой код на простом комбобоксе работает.
    Ошибка может вылетать, если в массиве, который ты подсовываешь в качестве датасорса комбобоксу нет значения текущей ячейки.
    • Помечено в качестве ответа I.Vorontsov 18 мая 2010 г. 7:11
    Модератор
  • Как мне изменить значения datagridviewcombobox?

    Нашел полно примеров но там вносять данные в колонку и потом её вставляют datagridview,

    а мне нужно изменять эти значения напрямую. Какой путь к ним.

  • Вопрос звучит не однозначно...

    Какие именно нужно менять значения на прямую?

    Модератор
  • У меня есть datagridview, combobox уже вставлен с некоторыми значениями, как програмно задать новые значения, например из масива стрингов? 
  • Немного покомбинировав строки из вышеизложенного получается вот такой код:

        private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
          if (this.dataGridView1.CurrentCell.GetType() == typeof(DataGridViewComboBoxCell))
          {
            ComboBox mycombo = e.Control as ComboBox;
            string[] _val = { "Один", "Два", "Три", this.dataGridView1.CurrentRow.Cells[this.dataGridView1.CurrentCell.ColumnIndex].Value.ToString() };
            mycombo.DataSource = _val;
            mycombo.ValueMember = mycombo.DisplayMember;
          }
        }
    И во вставленном combobox со вставленными значениями новые

    "Один", "Два", "Три" и текущее значение, чтобы эксепшен не ловить. 
    Модератор