C# 将列表绑定到 GridView

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/16020987/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-09 23:44:42  来源:igfitidea点击:

Binding List to GridView

c#asp.netgridviewbind

提问by Joe Borg

I have a list of credit card objects. The credit card class is the following:

我有一个信用卡对象列表。信用卡类如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Client
{
    public class CreditCard
    {
        public String A_Number;
        public String A_Name;
        public String A_Type;
        public String A_Owner_Type;
        public String Bank_City;
        public String Bank_State;
        public String Bank_ZIP;
        public String Balance;
        public String C_Username;

        public CreditCard()
        {

        }
    }
}

In another class, I am trying to bind the list to a grid view as follows:

在另一个类中,我试图将列表绑定到网格视图,如下所示:

protected void Page_Load(object sender, EventArgs e)
        {
            List<CreditCard> list = (List<CreditCard>)Session["list"];
            GridView_List.DataSource = list;
            GridView_List.DataBind();
        }

However, I am receiving the following error:

但是,我收到以下错误:

The data source for GridView with id 'GridView_List' did not have any properties or attributes from which to generate columns.  Ensure that your data source has content.

What is the problem? I checked that the list actually contains data so I don't know why it won't work? How can this problem be solved?

问题是什么?我检查了列表实际上包含数据,所以我不知道为什么它不起作用?如何解决这个问题?

采纳答案by d.moncada

You must use public properties for DataBinding. Update your class as follows:

您必须为 DataBinding 使用公共属性。更新您的课程如下:

  public class CreditCard
    {
        public String A_Number { get; set; }
        public String A_Name { get; set; }
        public String A_Type { get; set; }
        public String A_Owner_Type { get; set; }
        public String Bank_City { get; set; }
        public String Bank_State { get; set; }
        public String Bank_ZIP { get; set; }
        public String Balance { get; set; }
        public String C_Username { get; set; }

        public CreditCard() { }
    }

回答by Floremin

You have defined your CreditCardas an object with fields. Data binding can only be done with properties. So, you need to do something like this for all fields:

您已将 your 定义CreditCard为具有字段的对象。数据绑定只能通过属性来完成。所以,你需要对所有领域做这样的事情:

public String A_Number { get; set; }