2011-01-26 70 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