2010-06-03 64 views
0

我知道你可以綁定在代碼隱藏中,但我不太明白它是如何工作的,如果你想在控件標籤中聲明它。這是一個自定義集合。標籤中的ASP.Net數據綁定

我以爲那只是

 
Datasource="<%# MyCollection %>" 

哪裏MyCollection的是類在後面的代碼中暴露的財產?

 
MyCollection{ get{ return _MyCollection;}} 

就是這樣的。但它似乎並沒有這樣工作,所以我不能以這種方式綁定,或者我錯過了什麼?

回答

0

的「數據源」屬性不能以聲明方式設置。有沒有真正的理由這樣做,而不是綁定在後面的代碼?

執行此操作的替代方法是通過使用DataSourceID而不是DataSource來聲明性地設置它,DataSourceID必須是像SqlDataSource類型的IDataSource類型的控件的ID。你需要製作一個自定義控件來實現這個接口,並將其作爲數據源提供,但是我沒有看到這樣做的真正原因

+0

不,沒有真正的原因,只是它沒有填寫後面的代碼。和好奇心。 – Psytronic 2010-06-03 11:30:12

0

澄清你使用什麼控制。但無論如何 - <%#%> - 只是說你想從數據綁定容器提取數據。但在你的情況下不是這樣的(你沒有外部容器)。

要解決你的問題,你需要在頁面加載剛剛分配

MyControl.Datasource = MyCollection 
+0

這只是其中有通用控制數據源屬性。 Repeater,DropDownList等 – Psytronic 2010-06-03 10:43:10

0

你應該可以做你剛剛說的,是的。

http://support.microsoft.com/kb/307860

我想你已經錯過了位是這樣(從上面的鏈接引用):

特定數據源已經 被確定並在該 對象設定後.aspx頁面,您必須將 綁定到這些數據源。 可以使用Page.DataBind或 Control.DataBind方法將 數據綁定到數據源。

IIRC我認爲你不必這樣做,如果你想在一個數據綁定控件中有一個數據綁定控件 - 例如,嵌套中繼器。在這種情況下,我認爲設置數據源就夠了,但我可能會糾正?

看一看,在標題爲「)與Control.DataBind的Page.DataBind(()」

另一個網頁的一些例子是在這裏:
http://odetocode.com/articles/278.aspx