Click here to Skip to main content
15,890,438 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
How to bind TextBox in DataRepeater with Enum values? For example if one of column "Gender" in Database can have value "M" and "F" but when binded to Textbox its should enter text as "Male" and "Female", so how we can achieve this.
Posted

1 solution

You can take advantage of the Format and Parse events on the databinding to the textbox to translate between Text and Enum:
C#
Binding b = new Binding("Text", this.bs, "Gender", true, DataSourceUpdateMode.OnPropertyChanged);
b.Parse += new ConvertEventHandler(TextToGender);
b.Format += new ConvertEventHandler(GenderToText);
this.textBox1.DataBindings.Add(b);

Next, implement the two methods to perform the translation:
C#
void GenderToText(object sender, ConvertEventArgs e)
{
    Gender gender = (Gender)Enum.Parse(typeof(Gender), e.Value as string);
   
    switch (gender)
    {
        case Gender.Male:
            e.Value = "Male";
            break;
        case Gender.Female:
            e.Value = "Female";
            break;
        default:
            e.Value = "Unknown";
            break;
    }
}

void TextToGender(object sender, ConvertEventArgs e)
{
    switch (e.Value as string)
    {
        case "Male":
            e.Value = Gender.Male;
            break;
        case "Female":
            e.Value = Gender.Female;
            break;
        default:
            e.Value = Gender.Unknown;
            break;
    }
}

However, take good care about what to do when someone types "Gremlin" or something in the TextBox, do you have a Enum value that corresponds to an empty or unknown value, then use that in both default cases.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900