使用AJAX Toolkit创建新闻列表
我们很多站点上面都需要显示新闻列表,由标题和正文组成的。一般客户都希望实现这样的效果:
开始的时候只是显示标题,当点击标题的时候,再展开正文。再点击,又可缩回去。
这是典型的AJAX效果,或者说以前你也可以通过javascript来实现。我这篇文章中介绍一下使用ASP.NET AJAX框架来实现的效果
1. 静态的做法
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="NewPanelSample._Default" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="AJAX" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd%22>
<html xmlns="http://www.w3.org/1999/xhtml%22 >
<head runat="server">
<title>Untitled Page</title>
<style type="text/css">
.Header
{
background-color:Blue;
color:Red
}
</style>
</head>
<body>
<p>
这个页面演示了如何创建一个新闻列表,并且支持展开和收起。【陈希章】 <hr />
</p>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<table>
<tr>
<td>
<AJAX:Accordion ID="Accordion1" runat="server"
AutoSize="None" SelectedIndex="-1"
FadeTransitions="true"
TransitionDuration="250"
FramesPerSecond="40"
RequireOpenedPane="false"
SuppressHeaderPostbacks="true" HeaderCssClass="Header"
Width="799px"
>
<Panes>
<AJAX:AccordionPane ID="p1" runat="server">
<Header>
<b>这是第一个新闻</b>
</Header>
<Content>
这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br />
</Content>
</AJAX:AccordionPane>
<AJAX:AccordionPane ID="p2" runat="server">
<Header>
<b>这是第二个新闻</b>
</Header>
<Content>
这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br />
</Content>
</AJAX:AccordionPane>
<AJAX:AccordionPane ID="p3" runat="server">
<Header>
<b>这是第三个新闻</b>
</Header>
<Content>
这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br /> 这是新闻的内容<br /><br />
</Content>
</AJAX:AccordionPane>
</Panes>
</AJAX:Accordion></td>
</tr>
<tr>
<td>这是我的文本</td>
</tr>
</table>
</div>
</form>
</body>
</html>
2. 动态绑定数据源的做法
我们上面实现了需要的效果,但那些新闻是静态的,显然不是很理想。那么我们有没有办法去绑定数据库呢?请参考下面的修改
页面代码大大简化了
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="NewPanelSample._Default" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="AJAX" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd%22>
<html xmlns="http://www.w3.org/1999/xhtml%22 >
<head runat="server">
<title>Untitled Page</title>
<style type="text/css">
.Header
{
background-color:Blue;
color:Red
}
</style>
</head>
<body>
<p>
这个页面演示了如何创建一个新闻列表,并且支持展开和收起.【陈希章】<hr />
</p>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<table>
<tr>
<td>
<AJAX:Accordion ID="Accordion1" runat="server"
AutoSize="None" SelectedIndex="-1"
FadeTransitions="true"
TransitionDuration="250"
FramesPerSecond="40"
RequireOpenedPane="false"
SuppressHeaderPostbacks="true" HeaderCssClass="Header"
Width="799px"
>
<HeaderTemplate>
<asp:Label ID="lbTitle" runat="server" Text='<%# Eval("Title") %>'></asp:Label>
</HeaderTemplate>
<ContentTemplate>
<asp:Literal ID="lbDetails" runat="server" Text='<%# Eval("Details") %>'></asp:Literal>
</ContentTemplate>
</AJAX:Accordion></td>
</tr>
<tr>
<td>这是我的文本</td>
</tr>
</table>
</div>
</form>
</body>
</html>
代码文件中需要添加数据绑定代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace NewPanelSample
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
DataBind();
}
public override void DataBind()
{
var news = new[]{
new {Title="第一个新闻", Details="这是新闻详细信息<br/><br/><br/>这是新闻详细信息<br/><br/><br/>"}
,new {Title="第二个新闻", Details="这是新闻详细信息<br/><br/><br/>这是新闻详细信息<br/><br/><br/>"}
,new {Title="第三个新闻", Details="这是新闻详细信息<br/><br/><br/>这是新闻详细信息<br/><br/><br/>"}
};
Accordion1.DataSource = news;
Accordion1.DataBind();
}
}
}
3. 封装为webpart的做法【待续】
有兴趣的朋友可以思考一下,如何将该特性封装为WebPart
转载于:https://www.cnblogs.com/chenxizhang/archive/2009/05/16/1458516.html
使用AJAX Toolkit创建新闻列表相关推荐
- P35-前端基础-新闻列表
P35-前端基础-新闻列表 1.概述 通过一个新闻列表案例,总结前面学习CSS的基础知识. 2.新闻列表案例 2.1.案例用到的图片 2.2.案例代码 <!DOCTYPE html> &l ...
- 尚硅谷前端-京东左侧导航栏及网易新闻列表练习——CSS
跟着尚硅谷老师的练习,记录一下自己做的内容,查漏补缺. 目录 一.京东左侧导航栏 1.第一次自己做的代码(未看老师讲解视频前做的): 总结: 2.看完老师视频后跟着写的代码: 注意点及总结 删除行内元 ...
- CSS盒子模型总结(小练习网易新闻列表和京东导航条)
css盒子模型 边框(border) 边框的宽度 border-width 边框的颜色 border-color 边框的样式 border-style border-width 默认值为3px 可以用 ...
- Ajax — 新闻列表
注意:本项目主要利用到了template,模板引擎进行编写 模板引擎代码下载地址 <div id="news-list"><!-- 这里放数据 -->< ...
- python操作三大主流数据库(6)python操作mysql⑥新闻管理后台功能的完善(增、ajax异步删除新闻、改、查)...
python操作mysql⑥新闻管理后台功能的完善(增.删.改.查) 安装表单验证 D:\python\python_mysql_redis_mongodb\version02>pip inst ...
- 一步步打造漂亮的新闻列表(无刷新分页、内容预览)(4)
前面三篇文章实现了第一个目标,即无刷新分页.本文将实现第二个目标,即预览新闻内容.有两种方法可以实现内容的预览,一个是ajax,一个是伪ajax(姑且这么叫). 我们先用伪ajax实现新闻内容的预览. ...
- (仿头条APP项目)6.点击过的新闻列表文字变灰和下拉刷新与滚动加载新闻数据
文章目录 一.点击过的新闻列表文字变灰 效果图 实现思路 导入ormlite数据库类依赖 利用ormlite创建数据库和表 创建数据库类MyDbHelper 创建数据库中的新闻实体类NewInfo 页 ...
- ajax获取网页新闻,基于Ajax的新闻网页动态数据的抓取方法及系统
主权项: 1.基于Ajax的新闻网页动态数据的抓取方法,其特征是,包括如下步骤:步骤(101):建立新闻网页爬取内容数据库,设置新闻网页爬取内容数据库的编码方式:获得待抓取新闻网页的新闻列表页面的UR ...
- React Native :加载新闻列表
代码地址如下: http://www.demodashi.com/demo/13212.html 标签与内容页联动 上一节(React Native : 自定义视图)做到了点击标签自动移动,还差跟下面 ...
最新文章
- ftp+nginx+lua_Nginx+GraphicsMagick来实现目录浏览、实时缩略图
- Enews博客/CMS/双模式主题源码
- 【英语学习】【Level 08】U05 Better option L3 Everything's a click away
- 机器学习1/100天-数据预处理
- 是什么让你的ExtJS应用程序运行缓慢?
- Android 手机设置CMWAP 接入点
- java中使用阻塞队列实现生产这与消费这之间的关系
- ubutun 干净卸载删除deepin-wineQQ
- unity NOPI 创建word文档
- NVIDIA vGPU应用
- 西安计算机专业大专排名及分数线,西安所有的大学名单及排名分数线(本科 专科)...
- sklearn中make_blobs模块使用
- 聊聊我在职场的至暗时刻!
- 谷歌的AI布局:机器学习是重心 继续在中国招人
- Anaconda打开多个spyder窗口
- 【蓝桥杯:嵌入式】\Sre\main: error: argument of type “uint16_t *“ is incompatible with parameter of typ
- 软件项目管理和工作流程文集(CMMI)
- 大漠天使后台绑定测试工具
- Linux操作系统之文件系统详解
- 为什么是 import cv2呢
热门文章
- 米莱狄的机器人是_王者荣耀2.22更新:米莱狄机器人化身超级兵,狂铁将成T1级战士...
- eclipse提示方法已过时_提高效率,eclipse上你可能不知道的技巧
- vspy如何在图形面板显示报文_设备实时状态监控:如何进行工业生产设备数据采集?...
- 树状数组维护区间和的模型及其拓广的简单总结
- 《Python Cookbook 3rd》笔记(5.1):读写文本数据
- python官网网址是什么意思_大家都是怎么部署python网站的?
- 哈希表和有序表的简单介绍
- 使用openssl开源AES算法,实现aes、aes-cbc和aes-ecb对字符串的加解密
- 英语口语-文章朗读Week10 Wednesday
- Java命令:jstat — 查看JVM的GC信息