Как связать структуру с DropDownList - PullRequest
4 голосов
/ 10 октября 2011

Я использую C # в своем приложении ASP.NET, и есть некоторые свойства, которые я не хочу хранить в базе данных.Я хотел бы использовать определенную структуру для этих свойств, например:

public struct MedicalChartActions
    {
        public const int Open = 0;
        public const int SignOff = 1;
        public const int Review = 2;
    }

Так что я получаю целочисленное значение, когда использую MedicalChartActions.Open, что равно "0", но как я могу связать егоDropDownList контроль, чтобы я мог отобразить имя переменной?Как я могу получить имя переменной по значению?Например, как я могу вернуть «Open», если значение равно «0»?

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

Вместо использования структуры я бы использовал перечислитель, подобный предложенному SLaks.

public enum MedicalChartActions : int
{ 
    Open = 0,
    SignOff = 1, 
    Review = 2
} 

Тогда вы можете сделать что-то вроде этого:

var actions = from MedicalChartActions action in Enum.GetValues(typeof(MedicalChartActions))
              select new 
              { 
                  Name = action.ToString(), 
                  Value = (int)action; 
              };

DropDownList1.DataSource = actions.ToList();
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "Value";
DropDownList1.DataBind();

EDIT

Как только вы изменили структуру на enum, вы можете получить имя из значения, подобного этому:

int value = 0;
MedicalChartActions action = (MedicalChartActions)value;

string actionName = action.ToString();    
0 голосов
/ 10 октября 2011

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

Сначала создайте выпадающий список декларативно, как:

<asp:DropDownList ID="List1" runat="server">
    <asp:ListItem Text="Open" Value="0" />
    <asp:ListItem Text="SignOff" Value="1" />
    <asp:ListItem Text="Review" Value="2" />
</asp:DropDownList>

Далее используйте List1.SelectedValue, чтобы получить выбранное значение (0, 1, 2). Обратите внимание, что это будут строки, поэтому, если вам нужно работать с ними как числами, вам нужно привести их к целым числам, используя Convert.ToInt32(List1.SelectedValue).

Вы также можете создать перечисление, чтобы вам не приходилось жестко кодировать кучу чисел в вашем коде везде:

public enum MyEnum {Open, SignOff, Review};

Теперь вы можете просто ссылаться на значения как MyEnum.Open вместо 0.

...