asp net 编程问题 实现下一篇 和上一篇效果
首先是access数据库,有一个名为news的表,里面有三个字段,分别为id,classid 和name 其中id为主键,classid可以重复 现在有以下数据: id classid name 1 1 我的测试1 2 2 我的测试2 3 2 我的测试3 4 1 我的测试4 5 2 我的测试5 6 3 我的测试6 7 1 我的测试7 8 2 我的测试8 问题来了,我要实现上一篇和下一篇的效果,假设现在显示的是第5条新闻如下: 我的测试5 实现以下: 上一篇:我的测试3 下一篇:我的测试8 因为“我的测试5”的classid是2 所以要求上一篇和下一篇的classid也是2 这个很简单。你在查询的时候要查3次,第一次查询的是当前的记录,第2,3次查询的分别是上一条和下一条记录。 所以说应该是3条语句。 select * from news where id=id select top 1 * from news where id > id and classid=classid order by id asc select top 1 * from news where id < id and classid=classid order by id desc 由于ascss没存储过程,所以你可能要先把当前的记录查出来,取出这条记录的分类id,然后才能写出下面的2条查询语句。如果是sqlserver的话,我就直接在存储过程里实现这个功能。 *******************************************************************************************
C# 代码
//在页面上放2个Label 设置next1和up1 .
private void BindNewsUpNextData(int nNewsID)
{
News news = new News();
//上一篇
SqlDataReader recup1 = news.GetSingleNewsUp(nNewsID);
if (recup1.Read())
{
this.next1.Text = "下一篇:" + " <a href=shownews.aspx?newsid=" + recup1["NewsID"].ToString() + ">" + recup1["title"].ToString() + "</a>";
}
else
{
this.next1.Text = "下一篇:" + "已经没有了";
}
recup1.Close();
//下一篇
SqlDataReader recnext1 = news.GetSingleNewsNext(nNewsID);
if (recnext1.Read())
{
this.up1.Text = "上一篇:" + " <a href=shownews.aspx?newsid=" + recnext1["NewsID"].ToString() + "> " + recnext1["title"].ToString() + "</a>";
}
else
{
this.up1.Text = "上一篇:" + "已经没有了";
}
recnext1.Close();
}
SQL server 2005存储过程:
PROCEDURE [dbo].[Pr_News_Single_Next_Get]
(
@NewsID int
)
AS
SELECT
xw_News.NewsID,xw_News.title
FROM
xw_News
WHERE
NewsID=(select min(NewsID) from xw_News where NewsID>@NewsID and CategoryID=
(select CategoryID from xw_News where NewsID=@NewsID))
PROCEDURE [dbo].[Pr_News_Single_Up_Get]
( @NewsID int
)
AS
SELECT
xw_News.NewsID,xw_News.title
FROM
xw_News
WHERE
NewsID=(select max(NewsID) from xw_News where NewsID<@NewsID and CategoryID=
(select CategoryID from xw_News where NewsID=@NewsID))
asp net 编程问题 实现下一篇 和上一篇效果的更多相关文章
- ASP.NET编程模型之ASP.NET页面生命周期图解
ASP.NET编程模型中ASP.NET页面生命周期是指什么呢?它包括什么呢?ASP.NET编程模型之ASP.NET页面生命周期具体的过程有哪些呢?下面就开始我们的讲解吧: ASP.NET 页运行时,此 ...
- ASP.NET MVC 4 插件化架构简单实现-思路篇
用过和做过插件的都会了解插件的好处,园子里也有很多和讨论,但大都只些简单的加载程序集什么的,这里主要讨论的就是使用 ASP.NET MVC 4 来实现每个插件都可以完全从主站点剥离出来,即使只是一个插 ...
- ASP.NET MVC 4 插件化架构简单实现-实例篇
先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集. 4.定义模板引擎的搜索路径. 5.在模板引擎的查找页面方 ...
- 使用Word API打开Word文档 ASP.NET编程中常用到的27个函数集
使用Word API(非Openxml)打开Word文档简单示例(必须安装Word) 首先需要引入参照Microsoft.Office.Interop.Word 代码示例如下: public void ...
- ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现
很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构.这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地 ...
- ASP.NET 安全系列 Membership三步曲之入门篇 - Jesse Liu
Membership 三步曲 ASP.NET 安全系列 Membership三步曲之入门篇 ASP.NET 安全系列 Membership三步曲之进阶篇 ASP.NET 安全系列 Membership ...
- ASP.Net中自定义Http处理及应用之HttpModule篇
HttpHandler实现了类似于ISAPI Extention的功能,他处理请求(Request)的信息和发送响应(Response).HttpHandler功能的实现通过实现IHttpHandle ...
- 16第一章 ASP.Net编程基础知识
第一章 ASP.Net编程基础知识 第一章 ASP.Net编程基础知识 本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识.然后 ...
- 编程道拓扑bcd.top 0x01/ 开局第一篇: 随便聊聊/ 随笔
0x01 开局 编程道拓扑(bcd.top)是一个前端从业者的思考和总结, 如果你喜欢, 欢迎关注! 作者是一个前端从业者, 本系列会总结作者在工作和学习中的一些思考, 会有具体的技术点, 也会有关于 ...
随机推荐
- Android-操作栏之图标导航
想实现图标向上导航功能,步子分两步走: 1.样式上要改变-->图标要变成可点击的按钮,并有一个向左的箭头. 2.功能上要实现-->实现向上导航 首先谈第一步: 对于拥有fragment的a ...
- node.js 上传文件
在工作中碰到了这样的需求,需要用nodejs 来上传文件,之前也只是知道怎么通过浏览器来上传文件, 用nodejs的话, 相当于模拟浏览器的行为. google 了一番之后, 明白了浏览器无非就 ...
- itext poi 学习之旅 (3)读取数据库信息并由excel展现出来
DBConnection.java 连接数据库操作 package com.zkbj.poi; import java.sql.Connection; import java.sql.DriverMa ...
- q3 bsp随笔(2)
看完了q3的port生成,以及pvs的生成 做个记录 由于q3 bsp树生成时,将场景中所有的brush平面都参与, 所以就可用bsp树的分割平面来切分port port从根节点开始,初始windin ...
- Http服务器性能测试工具ab..
-A auth-username:password 对服务器提供BASIC认证信任.用户名和密码由一个:隔开,并以base64编码形式发送,无论服务器是否需要(即,是否发送了401认证需求代码),此字 ...
- ecstore生成二维码
利用phpqrcode库生成二维码: /* *二维码添加 */ ////////////////////////////////////// /*引入文件*/ @include(APP_DIR.'/i ...
- Python学习笔记总结(一)对象和流程语句总结
一.对象类型 1.数字 数字:不可变 2.字符串 字符串:不可原处修改[修改需要创建新的对象],有顺序,支持求长(len),合并(+),重复(*),索引S[0],分片(S[1:3]],成员测试(in) ...
- ARM 汇编器对C的扩展
__swi void ledtest(); //:声明 edtest 是个软中断. __asm 内嵌汇编 //:通常在C程序里面需要嵌入汇编代码,这是就可以用__asm关键字 ...
- java 内存区域中的栈
有人说栈区存放引用,这种说法并不准确. public void Method1() { int i = 4; int y = 2; class1 cls1 = new class1(); } java ...
- 深入super,看Python如何解决钻石继承难题
1. Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通方法和super方法 假设Base是基类 class Base(object): def __init_ ...