Billpeng Space

技术源自生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
-

由于我是从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();
        }

 

---------------------------------------------

另一个问题,由于一般在asp中所有记录都是由自己循环HTML显示出来的,我们在循环中可以加入很多代码加以控制。
而.net中数据库的内容基本是由控件自己显示出,我们是不需要在.net写例如ASP的循环代码:

<%
Do while not rs.eof


rs.movenext
Loop
%
>


那如果我们需要和ASP一样,在循环的时候加入控件代码怎么办呢?
我们可以使用ItemCreated事件,在Repeater中这个事件是每显示一条记录就自动会执行一次的。