我无法将一个通用的枚举列表绑定到GridView,下面是所有细节:
错误消息
具有id' GridView1'的GridView的数据源没有任何属性或属性来生成列。确保您的数据源包含内容。
ASPX页面
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Amikids.Pages.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
背后的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Amikids.Pages
{
public partial class WebForm1 : System.Web.UI.Page
{
public enum Pet
{
Cat = 0,
Dog = 1,
Bird = 2
}
protected void Page_Load(object sender, EventArgs e)
{
List<Pet> pets = new List<Pet>();
pets.Add(Pet.Bird);
pets.Add(Pet.Dog);
GridView1.DataSource = pets;
GridView1.DataBind();
}
}
}
答案 0 :(得分:0)
我无法弄清楚如何将枚举值列表直接绑定到GridView。在解决方法中,我将枚举值列表转换为字符串值列表。
下方 - 将枚举值列表转换为字符串值列表的代码。
public static List<string> ConvertListOfPetsToListOfStrings(List<Pet> pets)
{
List<string> listOfStrings = new List<string>();
foreach (Pet pet in pets)
{
listOfStrings.Add(pet.ToString());
}
return listOfStrings;
}
下面 - 绑定到GridView的代码
GridView1.DataSource = ConvertListOfPetsToListOfStrings(pets);
GridView1.DataBind();
下面 - 用于绑定到模板字段并设置有意义的HeaderText的ASPX标记。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="Type of Pet">
<ItemTemplate>
<%# Container.DataItem %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>