Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор значения свойства из списка, формируемого пр, Выбор значения свойства из списка 
:(
    Опции темы
Compositum
Дата 29.4.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

Репутация: нет
Всего: 1



контрол имеет свойство:

Код

[Category(propretyCategory2)]
        [Description("Тип базы данных")]
        [TypeConverter(typeof(PostTypeConverter))]
        /// <summary>
        /// Тип базы данных
        /// </summary>
        public string BaseType { get; set; }


Значение данного свойства должно выбираться из списка.
Сделал так:

Код

/// <summary>
    /// TypeConverter для списка типов баз
    /// </summary>
    class PostTypeConverter : StringConverter
    {
        /// <summary>
        /// Будем предоставлять выбор из списка
        /// </summary>
        public override bool GetStandardValuesSupported(
          ITypeDescriptorContext context)
        {
            return true;
        }

        /// <summary>
        /// ... и только из списка
        /// </summary>
        public override bool GetStandardValuesExclusive(
          ITypeDescriptorContext context)
        {
            // false - можно вводить вручную
            // true - только выбор из списка
            return true;
        }

        /// <summary>
        /// А вот и список
        /// </summary>
        public override StandardValuesCollection GetStandardValues(
          ITypeDescriptorContext context)
        {
            // возвращаем список 
            return new StandardValuesCollection(str);
        }
        string[] str = { "SQL Server", "Access"};        
    }


работает.
Проблема: нужно создать еще одно свойство, значение которого так же требуется выбирать из списка, но... Сам список должен содержать список полей DataTable, которая указана в свойствах контрола. Т.о. я должен создать класс, похожий на PostTypeConverter, но вот как в него передать ссылку...
создал класс:

Код

/// <summary>
    /// FieldsInt для списка полей таблицы, имеющих тип Int32
    /// </summary>
    class FieldsInt : StringConverter
    {
        DataTable tab = new DataTable();
        public FieldsInt(DataTable _tab)
        {
            tab = _tab;
        }
        /// <summary>
        /// Будем предоставлять выбор из списка
        /// </summary>
        public override bool GetStandardValuesSupported(
          ITypeDescriptorContext context)
        {
            return true;
        }

        /// <summary>
        /// ... и только из списка
        /// </summary>
        public override bool GetStandardValuesExclusive(
          ITypeDescriptorContext context)
        {
            // false - можно вводить вручную
            // true - только выбор из списка
            return true;
        }

        /// <summary>
        /// А вот и список
        /// </summary>
        public override StandardValuesCollection GetStandardValues(
          ITypeDescriptorContext context)
        {
            // возвращаем список 
            return new StandardValuesCollection(str);
        }

        List<string> str = new List<string>();
        private void list()
        {
        foreach (DataColumn item in tab.Columns)
        {
            if (item.DataType == typeof(int))
            str.Add(item.ColumnName);
        }
        }
    }


Но...

Код

/// <summary>
        /// Столбец первичного ключа
        /// </summary>
        public string PrimaryKeyFieldName { get; set; }        
        [Category(propretyCategory1)]
        [Description("Имя поля внешнего ключа. Само поле должно быть типа Int32")]
        [TypeConverter(typeof(FieldsInt))]
        /// <summary>
        /// Столбец внешнего ключа
        /// </summary>
        public string ForeignKeyFieldName { get; set; }


не то, конечно, ведь я не смог передать параметр, в котором указываю DataTable. Может я вообще не в ту сторону копаю? Как решить праблу?
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.