2010-06-03 66 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