2011-09-29 48 views
2

我有一個包含中繼器的用戶控件。看來,數據不能分配給它的DataSource屬性,我已經嘗試了一些不同的數據源,但顯示以下錯誤:(我已經調試它,並有數據源中的數據項)ASP.NET直放站用戶控制數據源

Object reference not set to an instance of an object 

這裏的ASPX該轉發器:

<asp:Repeater ID="repeater1" runat="server" > 
    <HeaderTemplate> 
     <ul> 
    </HeaderTemplate> 
     <ItemTemplate> 
      <li> 
       <%# Eval("Name") %> 
      </li> 
     </ItemTemplate> 
    <FooterTemplate> 
      </ul> 
    </FooterTemplate> 
</asp:Repeater> 

我在代碼中創建用戶控件的實例文件的背後我想在顯示中繼器 - 我不能鍵入repeater1.DataSource並在頁面分配給它如此我向使用IEnumerable作爲數據源的用戶控件添加了一個屬性。

任何想法爲什麼這不起作用?

+0

您將數據源分配給中繼器的位置?如果由於中繼器控件位於用戶控件內部而無法從頁面分配它,請在用戶控件中創建一個類似於SetDataSource的方法,並將數據源從您的頁面傳遞給該方法,然後該方法將其分配給中繼器。 –

+0

感謝您的回覆 - 但它給出了同樣的錯誤。 – Theomax

回答

3

你應該在DataBind()方法做這樣的事情如下所示:

public override void DataBind() 
{ 
    this.repeater.DataSource = ... 
    this.repeater.DataBind(); 
    ... 
} 

所以它將綁定,同時父頁面調用Page.DataBind()以及

Control.DataBind Method

使用此方法可以從一個源到服務器控制數據綁定。在通過數據庫 查詢檢索數據集之後,通常使用這種方法 。大多數控件會自動執行數據綁定,這意味着您通常不需要明確調用此方法,即 。

+0

即使數據源包含項目,錯誤仍然會發生。重寫方法似乎沒有被調用。 – Theomax

+0

我不明白如何使用包含數據的對象設置數據源時顯示此錯誤? – Theomax

+0

@aspdotnetuser:你確定問題出在中繼器上嗎?你能否在調試 - >異常VS菜單中啓用CLR異常並在調試模式下運行(或者將調試器附加到w3wp.exe進程中),並查看其他地方的問題 – sll

2

試試這個:內部的用戶控件地方是位於中繼器,在onload()方法

做到這一點:

repeater1.DataSource = MyIEnumerableProperty; 
repeater1.DataBind(); 
+0

我試過,但它的數據源設置行上的錯誤。 – Theomax