如何将结构体绑定到下拉列表

本文关键字:下拉列表 绑定 结构体 | 更新日期: 2023-09-27 18:10:56

我在ASP中使用c#。NET应用程序,有一些属性我不想存储在数据库中。我想为这些属性使用一个定义好的结构体,如下所示:

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

所以当我使用等于"0"的MedicalChartActions.Open时,我得到整数值,但是我如何将它绑定到DropDownList控件,以便我可以显示变量名称?我如何通过值获得变量名?例如,如果值等于"0",我如何返回"Open"?

如何将结构体绑定到下拉列表

我不使用结构体,而是像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();

编辑

一旦将结构体更改为enum,就可以从值中获得名称,如下所示:

int value = 0;
MedicalChartActions action = (MedicalChartActions)value;
string actionName = action.ToString();    

如果是我,并且您不想访问数据库来加载可能的值,那么我只需将这些值硬编码到程序中。

首先,声明式地创建下拉列表,如下所示:

<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>

接下来,使用清单1。注意,这些将是字符串,所以如果你需要使用它们作为数字,你需要使用Convert.ToInt32(List1.SelectedValue)将它们转换为整数。

你也可以创建一个枚举,这样你就不必在你的代码中到处硬编码一堆数字:

public enum MyEnum {Open, SignOff, Review};

现在你可以直接引用MyEnum的值。打开而不是0.