使用Asp.net处理数据库中的值

时间:2015-01-17 23:44:57

标签: c# asp.net

在我的数据库中,我将水果表示为1表示苹果,2表示橙子,3表示数据库字段中的梨表示为int。

我的问题是当我在页面上使用我的GridView输出它时显示“1,2,3”,所以当我希望它显示数字所代表的果实时。

如果(水果== 1)显示“Apple”等,我想要的是

我可以在.aspx页面中执行此操作吗?

5 个答案:

答案 0 :(得分:1)

在这种情况下,最好的办法是创建一个Enum类型,将数字分配给Fruit Names。

enum Fruit
    {   
        Apple=1, // Assigned integer value = 1 to apple
        Guava=2,    
        Banana=3
    };

public Fruit FruitName
{
             get;   // Auto implemented prop. of type Enum
             set;  
}

通过这种方式,您可以将数据库整数值与水果名称

进行比较
switch(value_from_database)
       {
           default:
           case 1:
             return Fruit.Apple;
           case 2:
             return Fruit.Guava;
           // ... so-on
       }

答案 1 :(得分:1)

您可以使用包含Label的TemplateField。步骤如下所示:

  1. 添加与包含Label的水果相关联的TemplateField。(例如lblFruit)
  2. 关联GridView的OnRowDataBound事件
  3. 按如下方式实施事件(C#):

    protected void gvFruits_RowDataBound(object sender,GridViewRowEventArgs e) {

    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        Label lblFruit = e.Row.FindControl("lblFruit") as Label;
        switch(value_from_database)
        {
           default:
           case 1:
             lblFruit.Text = "Apple";
           case 2:
             lblFruit.Text = "Orange";
           // ... 
        }
    }
    

    }

  4. 要获取与row关联的当前记录,可以使用e.Row.DataItem属性。 显示了一个很好的讨论here (citronas' answer)

答案 2 :(得分:0)

您可以在clas中创建一个getter属性,根据值决定要显示的内容..这样的事情可能是:

public string FruitName
{
   get
   {
       switch(someOtherField)
       {
           default:
           case 1:
             return "Apple";
           case 2:
             return "Orange";
           // ... 
       }
   }
}

然后您可以使用此属性将其显示给用户。

当然,如果您的问题只是数据库中的值与您希望向用户显示的值之间不匹配的示例。如果情况并非如此,并且它是您的应用程序的实际示例,那么您绝对应该在数据库表设计,关系等方面投入更多工作。

答案 3 :(得分:0)

我建议你的数据库包含一个带有ID和Name列的Fruit Table,你可以从数据库中获取值。

答案 4 :(得分:0)

在表格中添加一个带有水果名称的字段。

Sql Consult可能看起来像这样。

Select fruit_name from fruits where id = (1 or 2 or 3)