Infragistics Ultragrid — поле со списком в виде столбца

У меня проблема с элементом управления UltraGrid от Infragistics. Я создал ультракомбобокс с несколькими значениями:

 UltraCombo ultraComboPaneel = new UltraCombo();
        ultraComboPaneel.DataSource = articleList;
        ultraComboPaneel.ValueMember = "ArticleID";
        ultraComboPaneel.DisplayMember = "Name";

Теперь у меня есть UltraGrid, и я хочу поместить ультракомбо в ячейку, чтобы выбрать один из элементов ультракомбо в качестве значения ячейки. Я пробовал это как в коде, так и в дизайнере ультрасетки, но не могу найти способ сделать это.

У кого-нибудь из вас есть идея? При необходимости может быть предоставлена ​​дополнительная информация

Редактировать:

Я нашел что-то вроде

UltraGridColumn ugc = ultraGridTypePaneel.DisplayLayout.Bands[0].Columns.Add("combo");
ultraGridTypePaneel.DisplayLayout.Bands[0].Columns["combo"].EditorControl = ultraComboPaneel;

Я чувствую, что я на правильном пути, но это все еще не отображается на экране...


person Jelle Capenberghs    schedule 01.09.2011    source источник


Ответы (3)


UltraCombo обеспечивает большую функциональность. Если все, что вам нужно, — это возможность выбрать элемент из списка, вы можете найти в таблице Списки значений обеспечивают лучшее решение.

Вот некоторый код, чтобы вы начали:

    private void myGrid_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e)
    {
        const string colorValueList = @"ColorValueList";

        if (!e.Layout.ValueLists.Exists(colorValueList))
        {
            ValueList svl = e.Layout.ValueLists.Add(colorValueList);
            svl.ValueListItems.Add(1, "Red");
            svl.ValueListItems.Add(2, "Green");
            svl.ValueListItems.Add(3, "Blue");
        }
        e.Layout.Bands[0].Columns["Color"].ValueList = e.Layout.ValueLists[colorValueList];
    }
person PaulF    schedule 01.09.2011

По ссылке ниже вы можете найти некоторые подходы, которые можно использовать для помещения DropDown в ячейку UltraGrid:

http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.aspx?ArticleID=7841

Возвращаясь к вашему текущему фрагменту кода — вы почти у цели:

Сначала вы должны установить контекст привязки вашего UltraCombo в BindingContext формы, в которой ваш UltraCombo будет использоваться следующим образом:
ultraComboPaneel.BindingContext = this.BindingContext;

Обратите внимание, что настройка контекста связывания должна выполняться до того, как ваш элемент управления будет установлен как EditorControl. Еще одна вещь, которую я заметил, это то, что свойство в настоящее время изменено на EditorComponent, поэтому я полагаю, что вы используете более старую версию компонентов Infragistics. Однако вы все равно должны быть в состоянии использовать тот же самый подход. Я создал небольшой фрагмент кода, показывающий вышеприведенный код:

public partial class Form1 : Form
{
    UltraCombo uc;
    public Form1()
    {
        InitializeComponent();
        DataTable dt = new DataTable();
        dt.Columns.Add("Int", typeof(int));
        dt.Rows.Add(1);
        dt.Rows.Add(1);
        dt.Rows.Add(1);

        DataTable dtt = new DataTable();
        dtt.Columns.Add("Int", typeof(int));
        dtt.Rows.Add(2);
        dtt.Rows.Add(2);
        dtt.Rows.Add(2);

        uc = new UltraCombo();
        uc.BindingContext = this.BindingContext;
        uc.DataSource = dtt;

        ultraGrid1.DataSource = dt.DefaultView;
    }

    private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e)
    {
        e.Layout.Bands[0].Columns[0].EditorComponent = uc;
    }
}

Надеюсь это поможет.

person Danko Valkov    schedule 10.11.2011

Вместо этого я использую Ultra Dropdown.

дим удд как UltraDropDown

udd = Новый UltraDropDown

    With udd
        'add data binding or value list items here
    End With


    Me.ultragrid.DisplayLayout.Bands(0).Columns("Column Name").ValueList = udd

Ключ — это последняя строка, которая назначает «Список значений» столбца ультра сетки элементу управления «Раскрывающийся список».

person Brian Spencer    schedule 01.09.2011