Инфраструктура UltraGrid ValueList / UltraDropDown - PullRequest
0 голосов
/ 21 декабря 2010

Какое событие мне нужно обработать, чтобы пользователи могли добавить «фрукты» или в список оценщиков, или в раскрывающийся список ультра.* Какое событие я могу обработать, поэтому, когда пользователь вводит "grape", я могу добавить его в словарь своим собственным ключом, и он будет добавлен в выпадающий список.В настоящее время, если я набираю «grape» в ячейке, я просто получаю исключение формата.

Ответы [ 3 ]

2 голосов
/ 22 декабря 2010

Получил ответ от Mike @ infragistics, я не знал о ValueListResolved

Ответ от Mike

Есть несколько событий, которые вы могли быиспользовать.Я бы, вероятно, использовал BeforeCellUpdate или, возможно, BeforeExitEditMode.

В любом случае, вы должны использовать свойство ValueListResolved для ячейки, чтобы получить ValueList, а затем вы можете использовать метод GetValue, чтобы попытаться найти соответствующий элемент насписок.Используйте cell.EditorResolved.Text, чтобы получить текущий текст редактирования в ячейке для поиска.

1 голос
/ 17 мая 2012

Если вы используете «UltraDropDown» для списка значений, вы можете обработать его событие «BeforeDropDown».Сравните «используемые» значения в сетке со значениями в UltraDropDown, а затем скройте те, которые используются.Работал на меня.

    private void BindApprovalsTab()
    {
        uddApproverList.BeforeDropDown -= new CancelEventHandler(uddApproverList_BeforeDropDown);
        uddApproverList.DataSource = dsFindingDetails.Tables["Approvers"];
        uddApproverList.DisplayMember = "fldDisplayName";
        uddApproverList.ValueMember = "fldRoleGID";
        uddApproverList.Width = 150;
        uddApproverList.DisplayLayout.Bands[0].Columns["fldRoleGID"].Hidden = true;
        uddApproverList.DisplayLayout.Bands[0].Columns["fldDisplayName"].Header.Caption = "Role";
        uddApproverList.DisplayLayout.Bands[0].Columns["fldDisplayName"].Width = uddApproverList.Width;
        uddApproverList.BeforeDropDown += new CancelEventHandler(uddApproverList_BeforeDropDown);

        ugActionItemApprovals.DataSource = dsFindingDetails.Tables["tblIssueApprovals"];

    }

    void uddApproverList_BeforeDropDown(object sender, CancelEventArgs e)
    {
        //assume all rows show
        foreach (UltraGridRow udr in uddApproverList.Rows)
        {
            udr.Hidden = false;
        }
        //can we remove already used entries?
        foreach (UltraGridRow udr in uddApproverList.Rows)
        {
            string sDDRoleGID = udr.Cells["fldRoleGID"].Value.ToString();
            foreach (UltraGridRow ur in ugActionItemApprovals.Rows)
            {
                if (ur.Cells["fldApprovalRequiredBy"].Value.ToString() == sDDRoleGID)
                {
                    udr.Hidden = true;
                    break;
                }
            }
        }
    }
0 голосов
/ 22 декабря 2010

Это может относиться или не относиться к вашему вопросу, но в вашем коде много странных вещей.

UltraDropDown fruitUltraDropDown = new UltraDropDown();

В Infragistics есть мастера для создания, заполнения и отображения элементов управления в файле designer.cs.,Создание такого элемента управления отбрасывает все данные конструктора и создает новый элемент управления по умолчанию.Вы действительно намерены это?Это выдержка из файла designer.cs?

fruitUltraDropDown.DataSource = fruits.ToList();

Это создает новый List<KeyValuePair<int, string>> из вашего Dictionary.fruits теперь недоступен и может быть использован для сборки мусора, любое изменение, внесенное в него, никогда не будет распространено на fruitUltraDropDown.Почему вы создаете fruits только для того, чтобы выбросить его?

Какое событие я могу обработать, когда пользователь вводит "виноград" ...

Типы где?fruitUltraDropDown?Данные конструктора были отброшены, поэтому fruitUltraDropDown нельзя редактировать, если не отображается большой объем кода.MyUltraGrid?Вы не показываете никакого кода для этого, поэтому никто не может иметь никакого представления о том, что он реализует.Текстовое поле?Программные данные?Полная загадка.

Я могу добавить его в словарь ...

Добавлять что-либо в Dictionary бессмысленно, потому что вы его больше не используете.Если вы хотите добавить его к ultraDropDown1.DataSource, вы должны добавить KeyValuePair<int, string>:

var ds = ultraDropDown1.DataSource as List<KeyValuePair<int, string>>;
ds.Add(new KeyValuePair<int,string>(-3, "grape"));

Это просто добавит запись в резервное хранилище.Если вы хотите включить его в ultraDropDown1:

ultraDropDown1.DataBind();

Если это не поможет, вы должны добавить достаточно информации к своему вопросу, чтобы кто-то без вашего исходного кода мог понять, что вы пытаетесь сделать.

...