Пользовательский контроль текстового поля в asp.net - PullRequest
0 голосов
/ 28 марта 2010

Я пытаюсь создать собственное текстовое поле со свойством enum kind (например, textmode). Перечисленные значения будут поступать из базы данных. Но перечисления не могут быть динамическими. Есть ли другой выход ??

Ответы [ 3 ]

0 голосов
/ 28 марта 2010

Перечисления являются константами времени компиляции. Если значения базы данных не изменятся во время выполнения, тогда вы всегда можете использовать инструмент codegen для генерации значений enum из базы данных (во время предварительной компиляции). Если они изменятся, вам может понадобиться просто использовать свойство String или нечто подобное вместо Enum.

0 голосов
/ 29 марта 2010

Вы должны написать пользовательский TypeConverter для выполнения этой обязанности.

public class MyItemsConverter : TypeConverter
{

    public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
    {
        StringCollection values = new StringCollection();

        // Connect to database and read values.

        return new StandardValuesCollection(values);
    }

    public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
    {
        return (context != null);
    }

    public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
    {
        return true;
    }

}

public class MyControl : WebControl
{

    [TypeConverter(typeof(MyItemsConverter))]
    public string MyItem { get; set; }

}
0 голосов
/ 28 марта 2010

Ближайшим будет целочисленное свойство.

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