绑定数据源后,Repeater在创建时触发的事件,以及如果在cs文件中调用某个字段的值
Posted on 2008-11-15 21:26 billpeng 阅读(419) 评论(0) 编辑 收藏 举报
-
由于我是从asp转来学.net的,很多思路不得不跟着asp走,但在我刚刚入门的条件下发现显示数据一般是将Dataset绑定到某个控件上(如,Repeater),在Repeater中显示数据也很简单只要在ItemTemplate中写入<%#Eval("字段名")%>就可以了
但有时我们需要在cs文件中动态将字段内容附值到某个容器上(如:Label),但在后台中,输入Label.Text = Eval("字段名")是不行的
问题出在两个地方:
1.Repeater中的Labe为在cs文件中所以不能直接给它附值(数据库中取出的值)
2.Eval("字段名")这个写法也是通不过的
那怎么办呢?
其实可以使用以下方法来给Label1附值(下面代码中的e为事件中的传递参数,由系统生成)
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
((Label)e.Item.FindControl("Label1")).Text = ((DataRowView)e.Item.DataItem).Row["adate"].ToString();
}
{
((Label)e.Item.FindControl("Label1")).Text = ((DataRowView)e.Item.DataItem).Row["adate"].ToString();
}
---------------------------------------------
另一个问题,由于一般在asp中所有记录都是由自己循环HTML显示出来的,我们在循环中可以加入很多代码加以控制。
而.net中数据库的内容基本是由控件自己显示出,我们是不需要在.net写例如ASP的循环代码:
<%
Do while not rs.eof
rs.movenext
Loop
%>
Do while not rs.eof
rs.movenext
Loop
%>
那如果我们需要和ASP一样,在循环的时候加入控件代码怎么办呢?
我们可以使用ItemCreated事件,在Repeater中这个事件是每显示一条记录就自动会执行一次的。