public static IEnumerable <T> GetSelectedValues <T>(this SuggestListBox suggestListBox)
        {
            Contract.Requires(suggestListBox != null);

            if (suggestListBox.SelectionMode == ListSelectionMode.Single)
            {
                throw new HttpException();
            }

            var indices = suggestListBox.GetSelectedIndices();

            if (!indices.Any())
            {
                yield break;
            }

            foreach (var index in indices)
            {
                var listItem      = suggestListBox.Items[index];
                var listItemValue = listItem.Value;
                if (string.IsNullOrEmpty(listItemValue))
                {
                    continue;
                }
                var listItemParsedValue = (T)Convert.ChangeType(listItemValue, typeof(T));
                yield return(listItemParsedValue);
            }
        }
        public static bool SetSelectedValues <T>(this SuggestListBox suggestListBox, IEnumerable <T> values)
        {
            Contract.Requires(suggestListBox != null);
            Contract.Requires(values != null);

            if (suggestListBox.SelectionMode == ListSelectionMode.Single)
            {
                throw new HttpException();
            }

            suggestListBox.ClearSelection();

            foreach (var value in values)
            {
                var stringValue = value.ToString();
                var listItem    = (from item in suggestListBox.Items.OfType <ListItem>()
                                   where string.Equals(item.Value, stringValue)
                                   select item).FirstOrDefault();
                if (listItem == null)
                {
                    return(false);
                }

                listItem.Selected = true;
            }

            return(true);
        }
        public static T GetSelectedText <T>(this SuggestListBox suggestListBox)
        {
            Contract.Requires(suggestListBox != null);

            if (suggestListBox.SelectionMode == ListSelectionMode.Multiple)
            {
                throw new HttpException();
            }

            var selectedItem = suggestListBox.SelectedItem;

            if (selectedItem == null)
            {
                return(default(T));
            }
            if (string.IsNullOrEmpty(selectedItem.Text))
            {
                return(default(T));
            }

            return((T)Convert.ChangeType(selectedItem.Text, typeof(T)));
        }
        public static bool SetSelectedValue <T>(this SuggestListBox suggestListBox, T value)
        {
            Contract.Requires(suggestListBox != null);

            if (suggestListBox.SelectionMode == ListSelectionMode.Multiple)
            {
                throw new HttpException();
            }

            var stringValue = value.ToString();

            var listItem = (from item in suggestListBox.Items.OfType <ListItem>()
                            where string.Equals(item.Value, stringValue)
                            select item).FirstOrDefault();

            if (listItem == null)
            {
                return(false);
            }

            suggestListBox.SelectedValue = listItem.Value;
            return(true);
        }