为了实现这一演示,Insus.NET使用了一般新闻示例、其类别(目录)和文章。在一个页面上,显示所有类别,每个目录下显示最新新闻。效果如下:。
目录是用数据列表控件显示,而文章标题列表是一个用户控件显示,这个用户控件将动态被加入至数据列表。复制代码代码如下:视图代码ASP :中继器ID=“中继器1”runat=“服务器”ontemdata bound=“中继器1 _ itemdata bound”标头模板表单元格填充='5 '单元格间距='0 '宽度=' 100% '/页眉模板item tapel tr style=' height : 30px;线高' : 10px'TD $/TD ASP :超链接ID='超链接1 ' runat='服务器' NavigateUrl=' % # ' ~/文章视图。aspx?ID=' Eval(' Article _ NBR ')% ' ToolTip=' % # Eval(' Subject ')% ' Target=' _ blank '/asp:超链接/TD TD % # objinsusdatetime实用程序.GetDateTime(Eval('PublicDate '),' yyy-MM-DD ')%/TD/tr/项目模板页脚模板/表格/页脚模板/asp3360中继器复制代码代码如下:查看代码查看代码导入系统。数据导入因苏。网分部类继承系统。用户控件实现"值"继承接口作为新文章的模糊对象()受保护的objinsusdatetime实用程序As New in sdatetimeutility()Private _ data source As Object Private _ subject长度As Integer=20 Public只写属性主题长度()As Integer Set(按值As Integer)_ subject长度=值End Set End Property Protected Sub Page _ Load(按值发送方As Object,按值e As EventArgs)处理我。"加载数据绑定()结束子"绑定数据至中继器控件私有子数据绑定()我重复1。数据源=_数据源我中继器1。数据绑定()结束子保护子中继器1 _ itemdabond(由val发送方作为对象,通过值作为重复项事件参数)将对象作为数据行视图=直接广播。数据项目,数据行视图)如果。项目。项目类型=列表项目类型.交替项目或LSE项目。项目类型=列表项目类型.项目然后如果项目。' FindControl('超链接1 ')不为空,则模糊链接主题为超链接=直播(项目。' FindControl('超链接1 '、超链接)If objDrv('Subject ').长度_主题长度然后链接主题文本=对象(主题).子字符串(0,_SubjectLength)" . "其他链接主题文本=对象(主题).ToString()如果结束就结束如果结束就结束Sub '实现接口公共子集值(字符串作为对象)实现ISetValue .设置值我。_数据源=字符串结束子结束类上面用户控件中,有一个接口:复制代码代码如下:是使用系统的值;使用系统。集合。通用;使用系统Linq .使用系统。文字;命名空间因苏。NET {公共接口iset值{ void SetValue(对象obj);} } 显示目录:复制代码代码如下:视图代码:目录ID=' datalist Catalog ' runat=' server '重复列=' 2 '重复方向=' Horizontal ' DataKeyField=' Catalog _ NBR ' ontimedatabound=' datalist Catalog _ itemtodbound ' itemtplatediv style=' padd :2 px;高度:25px背景-颜色: # cbfb 25字体粗细:加粗;线高:25 Px% # Eval(' Catalogname ')%/div ASP 3360占位符ID='占位符rarticlelist ' runat='服务器'/asp:占位符/项目模板/asp:目录从数据库获取数据并绑定至目录的数据列表控件。复制代码代码如下:视图代码导入因苏。网分部类索引继承系统网络。ui。页面尺寸对象目录作为新目录()页面尺寸对象目录作为新文章()受保护的子页面_加载(发件人作为对象,e作为事件参数)处理我。如果不是,则加载返回,然后数据绑定()如果结束,则结束子私有子数据绑定()。真实的我数据列表目录。数据源=Objcatalog .getbyisaactive()Me .DataListCatalog。DataBind()结束子结束类下面是重点,就是OnItemDataBound事件,在这个事件中,需要找到asp:占位符控件,这个容器将用来加载用户控件。
复制代码代码如下:受保护的子数据列表目录_项目数据绑定(发送者为对象,电子邮件为数据列表项目事件参数)。项目或LSE e .项目。项目类型=列表项目类型.'然后替换项目'判断asp:占位符是否存在如果e .项目查找控件(' PlaceHolder rarticlelist ')不为空,则dim ctllaceHolder As Placeholder=DirectCast(例如项目。查找控件(' PlaceHolder rarticlelist '),PlaceHolder)动态加载用户控件,并转换为接口Dim objuc As ISetValue=DirectCast(加载控件(~/ASX controls/项目列表。ascx '),iset值)找到数据列表控件的目录主键目的.目录_nbr=我。数据列表目录Top=2 '为用户控件赋值objuc .SetValue(objArticle .GetArticalTopByCatalog())"加载用户控件ctllaceHolder。控制。添加(对象)结束如果结束如果结束子