首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > ASP.NET > (原创)关于操作Repeater控件Template内控件
【标  题】:(原创)关于操作Repeater控件Template内控件
【关键字】:Repeater,Template
【来  源】:http://blog.csdn.net/levenc/archive/2006/09/13/1215260.aspx

(原创)关于操作Repeater控件Template内控件

http://blog.leven.com.cn/article.asp?id=70

        经常有这样情况出现,一个网页的某个列表,由于用户的不同而某些选项出现变化,例如,在blog中,如果用户是管理员,就可以看见删除blog和修改blog的链接,而没有登陆或者权限不够的话就没有链接的出现,在asp.net中,Repeate是典型的列表控件,所以对于在其他语言中可以轻松实现的功能,在.net倒没有办法轻易实现,当然,办法不是没有的,本文就是正式为了解决这个问题。
还是以刚才的blog为例,如果在Repeater的Item中有这样的链接:
<asp:HyperLink ID="Blog_Edit" runat="server" ToolTip="编辑该日志" AccessKey="E" NavigateUrl='<%#Eval("id","BlogPost.aspx?action=edit&id={0}") %>'><img src="images/icon_edit.gif" alt="" border="0" style="margin-bottom:-2px"/></asp:HyperLink>
<asp:HyperLink ID="Blog_Del" runat="server" ToolTip="删除该日志" NavigateUrl='<%#Eval("id","javascript:OnDel(\"Blog_Del.aspx?id={0}\")") %>'><img src="images/icon_del.gif" alt="" border="0" style="margin-bottom:-2px"/></asp:HyperLink>

这些要当管理员登陆之后才显示。
假设Session["Blog_UserType"]和Session["Blog_UserName"]中保存了用户登陆信息,那应该怎么做?
我们要操作Repeater的内容,那么就要选择Repeater还没有呈现出来的时候操作,例如,我可以在Repeater的ItemDataBound时间中进行操作。那我们可以在aspx文件中可以这样写:
<asp:Repeater ID="Content_List" runat="server" OnItemDataBound="Repeater_ItemDataBound">
然后在cs文件中写:
protected  void Repeater_ItemDataBound(object sender,System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
    }
这样发生ItemDataBound时间是会调用该函数。
确定修改时间,现在关键就是要如何修改了,我们要用到RepeaterItem的FindContro函数,寻找要修改的控件,然后修改,该例子具体的代码如下:
protected  void Repeater_ItemDataBound(object sender,System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
        string _type, _user;
        try
        {
            _type = Session["Blog_UserType"].ToString();
            _user = Session["Blog_UserName"].ToString();
        }
        catch
        {
            _type = string.Empty;
            _user = string.Empty;
        }
        if (_type==string.Empty||_user==string.Empty)
        {
            RepeaterItem item = e.Item;
            if ((item.ItemType == ListItemType.Item) || (item.ItemType == ListItemType.AlternatingItem))
            {
                ((HyperLink)item.FindControl("Blog_Edit")).Visible = false;
                ((HyperLink)item.FindControl("Blog_Del")).Visible = false;
            }
        }
    }
这样一来就实现了在不同状况下Repeater元素也有不同的显示。。 
 

梧桐兄策划的EasyVR虚拟现实技术论坛开通了:【上一篇】
Bindows | chapter two:【下一篇】
【相关文章】
  • Traits: a new and useful template technique
  • CALLBACKS IN C++ USING TEMPLATE FUNCTORS
  • 设计模式学习笔记之三:Template Method 和 Factory Method
  • 母版页里面查找Repeater内控件,并构造URL
  • 关于访问DataGrid中FooterTemplate里控件问题
  • DNN模块开发系列文章(7)——用CodeSmith Templates进行编码
  • getHibernateTemplate().save() 未保存到数据库问题之解决
  • 模版template
  • Using OLE DB Consumer Templates
  • Spring Hibernate Template Save Or Update
  • 【随机文章】
  • Filter过滤器的使用(转)
  • 获取RPG源代码
  • java自定义异常的一个例子
  • 快闪手册——Shift键的妙用
  • some linux command tips
  • 选择并使用 MSDE 2000 作为应用程序的数据库引擎
  • 为什么ODBC不是Linux的一个标准特征?
  • PHP新手上路(十四)
  • VoWLAN (Voice over WLAN)——在IP上实现移动的语音和数据连接
  • 转的别人的开发驱动经验(略有改动)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.