датагридвью с выпадающими списками - PullRequest
0 голосов
/ 22 апреля 2009

Я создал два класса:

public class Params : List<Param>
{

}

public class Param
{
    public enum enType
    {
        Integer,
        Double,
        String,
        DateTime
    }

    private string sName_m;
    public string Name
    {
        get { return sName_m; }
        set { sName_m = value; }
    }

    private string sValue_m;
    public string Value
    {
        get { return sValue_m; }
        set { sValue_m = value; }
    }

    private enType eType_m;
    public enType Type
    {
        get { return eType_m; }
        set { eType_m = value; }
    }
}

Теперь я хочу иметь возможность отображать параметры в элементе управления типа Grid в приложении Windows, поэтому я перетащил DataGridView в свою форму и выбрал источник данных, выбрав Другие источники данных -> Источник данных проекта, а затем выбираю мой класс Params (frmMain + Params).

Теперь, когда я запускаю приложение, я могу добавлять / удалять / редактировать записи, и сетка показывает три столбца. То, что я хотел бы сделать, это иметь выпадающий список столбца Тип, позволяя моим значениям выбора в перечислении. В настоящее время я должен ввести строку, которая должна соответствовать перечислению. Возможный?

Ответы [ 2 ]

1 голос
/ 22 апреля 2009

Вы можете отключить автоматическую генерацию столбцов и вручную создать нужные столбцы, или вы можете удалить столбец и добавить новый вместо него.

var columns = dataGridView1.Columns;

var oldColumn = columns.Cast<DataGridViewColumn>()
                       .Single(c => c.DataPropertyName == "Type");
var index = columns.IndexOf(oldColumn);

var newColumn = new DataGridViewComboBoxColumn();
newColumn.Name = "Type";
newColumn.DataSource = Enum.GetValues(typeof(Param.enType));
newColumn.ValueType = typeof(Param.enType);

columns.RemoveAt(index);
columns.Insert(index, newColumn);
1 голос
/ 22 апреля 2009

Мне никогда не удавалось получить автоматическую привязку данных для правильной настройки DataGridViewComboBoxCell / DataGridViewComboBoxColumn (как и CheckBox), поэтому я прибегнул к установке AutoGenerateColumns в значение false и настройке столбцов вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...