2009-09-07 106 views
2

我有一个控件,我想通过它的数据源进行交流,这有可能吗?我可以迭代数据源吗?

该控件绑定到一个中继器,但我也想通过在.ascx控件页面顶部使用内联代码遍历项目。

这可能吗?

更新

我绑定到一个中继器,并绑定到中继器的东西是一个List集合。

我想:

myRepeater.DataSource 

而且我不通过智能感知得到什么,铸造List<UserPRofile>也不起作用。

+0

“bound to repeater”意思是什么?控制器是否包含在中继器内,或者是控制器的中继器部分? – 2009-09-07 20:18:18

回答

1

当然,只要引用控件的DataSource属性,它就会返回你最初绑定到控件的任何东西。您需要将返回值转换为适当的类型。

var dataSource = (List<MyClass>)myRepeater.DataSource; // your control 

记住,如果您打算进行更改,并希望它在控制中反映出来,那么你应该使用支持2路结合适当的数据源,如BindList

+0

无法正常工作,甚至没有投下它之后...... – mrblah 2009-09-07 20:27:29

+0

你能用更多的代码更新你的问题吗?向我们展示Repeater标记和数据绑定。这听起来像你正在使用用户控件。你是否将列表绑定到用户控件并试图访问他们的数据源?这将与中继器的数据源分开。 – 2009-09-07 20:44:50

1

据我所知,你想访问位于用户控件内的中继器的数据源。我建议你将数据源公开为一个属性,并使用它在用户控件之外循环,并绑定你的中继器。

也可以使用Repeater.Items集合并获取每个绑定的行作为RepeaterItem实例。

foreach (RepeaterItem repeaterItem in myRepeater.Items) 
{ 
    lblResult.Text += " " + repeaterItem.Text; 
} 
相关问题