【问题标题】:ASP.NET Error when binding a GridView to a List of Objects?将 GridView 绑定到对象列表时出现 ASP.NET 错误?
【发布时间】:2013-05-10 17:40:56
【问题描述】:

错误信息:

ID 为“FormProprietari”的 GridView 的数据源没有 从中生成列的任何属性或属性。确保 您的数据源有内容。

我有一个 ASP.NEt 应用程序,我在其中尝试将 GridView 绑定到 List<T> 对象,从我在网上可以看出这应该是可能的。

这是我的GridView:

<asp:GridView ID="FormProprietari" runat="server">
        <Columns>
            <asp:TemplateField >
                 <ItemTemplate> 
                    <%#((Lab_TAP_web.Proprietar)Container.DataItem).NumeProprietar%> 
                 </ItemTemplate>
            </asp:TemplateField>

            <asp:TemplateField >
                 <ItemTemplate> 
                    <%#((Lab_TAP_web.Proprietar)Container.DataItem).PrenumeProprietar%> 
                 </ItemTemplate>
            </asp:TemplateField>

            <asp:TemplateField >
                 <ItemTemplate> 
                    <%#((Lab_TAP_web.Proprietar)Container.DataItem).ProprietarID%> 
                 </ItemTemplate>
            </asp:TemplateField>
        </Columns>

    </asp:GridView>

这是我将我定义的Proprietar类的新对象添加到数据库然后重新绑定gridview以显示它的函数,我应该提到最初数据库是空的,gridview i也是, e 它不显示。

protected void Button2_Click(object sender, EventArgs e)
        {
            var Nume = TBNumeProprietar.Text;
            var Prenume = TBPreNumeProprietar.Text;

            MyCars db = DBSilo.db;

            Proprietar newOwner = new Proprietar();
            newOwner.NumeProprietar = Nume;
            newOwner.PrenumeProprietar = Prenume;
            newOwner.ProprietarID = (db.Proprietari.Count() + 1);
            //newOwner.ProprietarID = 1;



            db.Proprietari.InsertOnSubmit(newOwner);
            db.SubmitChanges();

            try
            {
                FormProprietari.DataSource = db.Proprietari.ToList();
            }
            catch (Exception)
            {

                throw;
            }
            FormProprietari.DataBind();           
        }

问题是我检查了List&lt;Proprietar&gt;,它是带有断点的数据源,并且列表始终包含Proprietar 对象。

有人知道我做错了什么吗?

【问题讨论】:

  • 如果你尝试 Reponse.Write(db.Proprietari.Count().ToString()) 它会给你一个 1 吗?
  • 是的,它返回一个 1,这是正确的,因为应该只有 1 行。
  • 你要按部就班地发展。 1) 将测试记录插入数据库,并看到这些记录显示在GridView。 2)然后开发插入/更新/删除。
  • @Win 对不起,我没有得到你,我已经在他们存在的数据库中插入了测试记录我确定,我想做的是让他们显示导致我发布的错误的原因,我不需要 gridview 中的任何其他内容,而是查看我插入的行。
  • 请确保Proprietar 类的每个属性都有getter 和setter。如果仍然无法正常工作,请创建一个这样的集合(没有数据库)并调试/测试 GridView - stackoverflow.com/a/16407618/296861

标签: asp.net gridview data-binding


【解决方案1】:

从评论移至回答。

请确保您对 Proprietar 类的每个属性都有 getter 和 setter,就像这样 -

public class Proprietar
{
    public string NumeProprietar { get; set; }
    public string PrenumeProprietar { get; set; }
    public int ProprietarID { get; set; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多