2011-01-26 69 views
4

这是我遇到过的最奇怪的错误,因为它没有任何意义。我从我的控制器中获得一个IList。我甚至可以编写一个foreach循环并将TicketId追加到一个stringbuilder并显示我的结果。GridView没有任何属性或属性来生成列

我可以把断点,看看我有预期的结果返回....作为预期!在将所有的值(无拼写错误,因为我已经甚至复制粘贴&)

但如果我尝试将其绑定到一个GridView或中继器我得到的错误:ID为“GV”的GridView的数据源没有没有任何属性或属性从中产生列

例子 - 在此代码如果我注释掉的数据绑定到GridView GV - 我得到的结果的TicketId的为epxected:

LeadController controller = new LeadController(); 
     var leads = controller.SearchProducts(DateTime.Now.AddDays(-50), 
                 DateTime.Now, string.Empty, string.Empty); 

     var sb = new StringBuilder(); 

     foreach (LeadDto lead in (leads)) 
     { 
      sb.Append(string.Format("{0} -----", lead.TicketId)); 
     } 
     lblTop.Text = sb.ToString(); 

     gv.DataSource = leads; 
     gv.DataBind(); 

但是,如果DataBinding没有被评论 - 整个页面错误与以上错误。 这里是我的ascx

<asp:TextBox ID="lblTop" runat="server" /><asp:GridView ID="gv" runat="server" AutoGenerateColumns="true" ></asp:GridView> 

如果我改变我的GridView像这样:

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" > 
<Columns> 
    <asp:TemplateField > 
     <ItemTemplate> 
      <%# Eval("TicketId") %> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 

我得到一个错误,指出:数据绑定: 'DataTransferObjects.LeadDto' 不包含属性名称为'TicketId'

但我可以看到设置数据源和之前的数据绑定后,它...

我试图关闭VS2008 &甚至重新启动我的电脑,以防万一它是一个魔仙错误....

请问,有什么建议吗?

+0

没有看到你的LeadController类,它是我很难以查明问题。什么改变你的绑定代码为gv.DataSource = leads.AsEnumerable()呢? – TheGeekYouNeed 2011-01-26 23:04:51

回答

16

你说LeadDto对象有一个名为TicketId属性,但你确定这是一个财产而不是?也就是说,在你的LeadDto课程中如何定义TicketId?如果它被定义为一个成员变量,那么它是不是属性:

public class LeadDto 
{ 
    public int TicketId; 

    ... 
} 

数据绑定只能对性能绑定:

public class LeadDto 
{ 
    public int TicketId { get; set; }; 

    ... 
} 
+0

斯科特....你钉了它!这正是我所做的。不知道为什么我没有这样的方式 - 正如我遵循的例子所做的那样...谢谢你,嘘! – ajwaka 2011-01-26 23:47:03