Asp.net实现向上向下排序的例子

   工作中一些常用到的代码记录下来,方便自己查找也方便其他需要人士参考。

  废话不多说,这是一个向上向下排序的功能,首先使用存储过程 整好 如下:

  SQL:

  -- =============================================

  -- Author:

  -- Create date:

  -- Description:

  -- =============================================

  ALTER PROCEDURE [dbo].[sp_BannerOrder]

  -- Add the parameters for the stored procedure here

  (

  @tablename nvarchar(50), --表名

  @colname nvarchar(50), --排序字段

  @keyid nvarchar(50), --表主键字段

  @keyidvalue int, --表主键字段值1

  @order nvarchar(20), -- 列表默认的排序方式,asc或desc

  @orderDirection nvarchar(20), --排序方向,up或down

  @where nvarchar(2000) --查询条件

  )

  AS

  BEGIN

  declare @ordertmp1 int; --临时排序值id1

  declare @ordertmp2 int; --临时排序值id2

  declare @tmpkeyidvaule nvarchar(50);

  declare @sql nvarchar(2000);

  DECLARE @ParmDefinition nvarchar(500);

  DECLARE @ParmDefinition2 nvarchar(500);

  if @order='asc'

  begin

  SET @sql = N'SELECT @ordertmp1OUT='+@colname+' from '+@tablename+' where '+@keyid+'='+cast(@keyidvalue as nvarchar(50));

  SET @ParmDefinition = N'@ordertmp1OUT nvarchar(20) OUTPUT';

  EXECUTE sp_executesql @sql, @ParmDefinition, @ordertmp1OUT=@ordertmp1 OUTPUT;

  if @orderDirection='up'

  begin

  SET @sql = N'SELECT top 1 @ordertmp2OUT='+@colname+',@tmpkeyidvauleOUT='+@keyid+' from '+@tablename+' where '+@colname+'<'+cast(@ordertmp1 as nvarchar(50))+' and '+@where+' order by '+@colname+' desc';

  end

  else

  begin

  SET @sql = N'SELECT top 1 @ordertmp2OUT='+@colname+',@tmpkeyidvauleOUT='+@keyid+' from '+@tablename+' where '+@colname+'>'+cast(@ordertmp1 as nvarchar(50))+' and '+@where+' order by '+@colname+' asc';

  end

  SET @ParmDefinition = N'@ordertmp2OUT nvarchar(20) OUTPUT, @tmpkeyidvauleOUT nvarchar(20) OUTPUT';

  EXECUTE sp_executesql @sql, @ParmDefinition, @ordertmp2OUT=@ordertmp2 OUTPUT, @tmpkeyidvauleOUT=@tmpkeyidvaule OUTPUT;

  end

  else

  begin

  SET @sql = N'SELECT @ordertmp1OUT='+@colname+' from '+@tablename+' where '+@keyid+'='+cast(@keyidvalue as nvarchar(50));

  SET @ParmDefinition = N'@ordertmp1OUT nvarchar(20) OUTPUT';

  EXECUTE sp_executesql @sql, @ParmDefinition, @ordertmp1OUT=@ordertmp1 OUTPUT;

  if @orderDirection='up'

  begin

  SET @sql = N'SELECT top 1 @ordertmp2OUT='+@colname+',@tmpkeyidvauleOUT='+@keyid+' from '+@tablename+' where '+@colname+'>'+cast(@ordertmp1 as nvarchar(50))+' and '+@where+' order by '+@colname+' asc';

  end

  else

  begin

  SET @sql = N'SELECT top 1 @ordertmp2OUT='+@colname+',@tmpkeyidvauleOUT='+@keyid+' from '+@tablename+' where '+@colname+'<'+cast(@ordertmp1 as nvarchar(50))+' and '+@where+' order by '+@colname+' desc';

  end

  SET @ParmDefinition = N'@ordertmp2OUT nvarchar(20) OUTPUT, @tmpkeyidvauleOUT nvarchar(20) OUTPUT';

  EXECUTE sp_executesql @sql, @ParmDefinition, @ordertmp2OUT=@ordertmp2 OUTPUT, @tmpkeyidvauleOUT=@tmpkeyidvaule OUTPUT;

  end

  set @sql = 'update '+@tablename+' set '+@colname+'='+cast(@ordertmp2 as nvarchar(50))+' where '+@keyid+'='+cast(@keyidvalue as nvarchar(50));

  set @sql = @sql + ' update '+@tablename+ ' set '+@colname+'='+cast(@ordertmp1 as nvarchar(50))+' where '+@keyid+'='+cast(@tmpkeyidvaule as nvarchar(50));

  --select @ordertmp1,@ordertmp2,@tmpkeyidvaule,@sql

  exec(@sql);

  END

  MODEL:

  public class Banner

  {

  public Banner()

  { }

  private int _id;

  private string _smallPic;

  private string _bigPic;

  private int _orderid;

  private string _url;

  private string _title;

  private string _descript;

  //字增量ID

  public int ID

  {

  get { return this._id; }

  set { this._id = value; }

  }

  //BANNER小图

  public string SmallPic

  {

  get { return this._smallPic; }

  set { this._smallPic = value; }

  }

  ///

 

  /// BANNER大图

  ///

 

  public string BigPic

  {

  get { return this._bigPic; }

  set { this._bigPic = value; }

  }

  ///

 

  /// 排序ID

  ///

 

  public int OrderId

  {

  get { return this._orderid; }

  set { this._orderid = value; }

  }

  ///

 

  /// URL地址

  ///

 

  public string Url

  {

  get { return this._url; }

  set { this._url = value; }

  }

  ///

 

  /// 标题

  ///

 

  public string Title

  {

  get { return this._title; }

  set { this._title = value; }

  }

  ///

 

  /// 描述

  ///

 

  public string Descript

  {

  get { return this._descript; }

  set { this._descript = value; }

  }

  }

  IDAL代码:

  /// 排序

  ///

  ///
表名

  ///
排序字段

  ///
表主键字段

  ///
表主键字段值

  ///
列表默认的排序方式,asc或desc

  ///
排序方向,up或down

  ///
条件

  ///

  int Order(string table,string colname,string keyid,int keyidvalue,string order,string orderDirection,string whe);

  SQLDAL代码:

  public int Order(string table,string colname,string keyid,int keyidvalue,string order,string orderDirection,string whe)

  {

  SqlParameter[] paras = {

  new SqlParameter("@tablename", table),

  new SqlParameter("@colname",colname),

  new SqlParameter("@keyid",keyid),

  new SqlParameter("@keyidvalue",keyidvalue),

  new SqlParameter("@order",order),

  new SqlParameter("@orderDirection",orderDirection),

  new SqlParameter("@where",whe)

  };

  return Convert.ToInt32( SqlHelper.ExecuteNonQuery(Configuration.ConnectionString, CommandType.StoredProcedure, "sp_BannerOrder", paras));

  BLL代码:

  public int Order(string table, string colname, string keyid, int keyidvalue, string order, string orderDirection, string whe)

  {

  return bner.Order(table, colname, keyid, keyidvalue, order, orderDirection, whe);

  }

  WEB:

  aspx代码:

  <%@ Page Language="C#" MasterPageFile="~/Admin/Masterpage/Page.Master" AutoEventWireup="true" CodeBehind="Banner.aspx.cs" Inherits="YXShop.Web.Admin.Article.Banner" %>

  <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

  <%@ Register assembly="FredCK.FCKeditorV2" namespace="FredCK.FCKeditorV2" tagprefix="FCKeditorV2" %>

  前台Banner管理

 

 

  标  题: 最多可填写15个字
  描  述: 最多可填写20个字
上传小图:
 

  

  

  ErrorMessage="请选择图片!">

  

上传大图:
 

  

  

  ErrorMessage="请选择图片!">

  


 

    排  序:

  


 

  

  

  ControlToValidate="txborder" ErrorMessage="不能为空!">

  

链接地址:
 

  

  ControlToValidate="txbUrl" ErrorMessage="不能为空!">

  

  ControlToValidate="txbUrl" ErrorMessage="填写的地址不符合规格"

  ValidationExpression="http(s)?://([w-]+.)+[w-]+(/[w- ./?%&=]*)?">

  


 

  

  onclick="btnOK_Click" />

  

  



 

 

  

 

  

 

 

  

 


 

  

  onrowdatabound="gvwBannner_RowDataBound" BackColor="White" DataKeyNames="ID"

  BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3"

  GridLines="Horizontal" onrowcancelingedit="gvwBannner_RowCancelingEdit"

  onrowdeleting="gvwBannner_RowDeleting" onrowediting="gvwBannner_RowEditing"

  onrowupdating="gvwBannner_RowUpdating" AllowSorting="True" Width="551px">

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  <%--

  DataAlternateTextFormatString="这是{0}的图" DataImageUrlField="smallPic"

  HeaderText="图片">

  

  --%>

  

  

  

  

  

  

  

  Text="向上" onclick="Button1_Click" />

  

  

  

  

  

  Text="向下" OnClick="Button2_Click" />

  

  

  

  

  

  

  CommandName="Delete" Text="删除" OnClientClick="return confirm('是否刪除?');" >

  

  

  

  

  

  

  

  

  

  

  

  CS代码:

  protected void Button1_Click(object sender, EventArgs e)

  {

  int keyidvlue = Convert.ToInt32(gvwBannner.DataKeys[((GridViewRow)((Button)sender).NamingContainer).RowIndex].Value); //获取主键值

  int row = Convert.ToInt32(((GridViewRow)((Button)sender).NamingContainer).RowIndex);//获取行号

  if (row == 0)

  {

  YXShop.Common.alert.show("已经最前了!");

  }

  else

  {

  bll.Order("banner", "orderid", "id", keyidvlue, "desc", "up", "1=1");

  this.Bind();

  }

  }

  //向下

  protected void Button2_Click(object sender, EventArgs e)

  {

  //int keyidvlue = ((GridViewRow)((Button)sender).NamingContainer).RowIndex;

  int keyidvlue = Convert.ToInt32(gvwBannner.DataKeys[((GridViewRow)((Button)sender).NamingContainer).RowIndex].Value);

  int row1 = Convert.ToInt32(((GridViewRow)((Button)sender).NamingContainer).RowIndex);

  if (row1 == this.gvwBannner.Rows.Count-1)

  {

  YXShop.Common.alert.show("已经最后了!");

  }

  else

  {

  bll.Order("banner", "orderid", "id", keyidvlue, "desc", "down", "1=1");

  this.Bind();

  }

  }

  至此完毕。

时间: 2024-12-20 06:06:12

Asp.net实现向上向下排序的例子的相关文章

ASP.NET中实现DataGrid数据排序

asp.net|datagrid|排序|数据 Visual Studio .Net为编写WinForm程序(即:在Windows平台下运行的程序)所提供的DataGrid组件比起微软以往的各种开发环境中提供的DataGrid组件都要"高级"许多.其"高级"的地方就在于不需要再进行任何其他设置或编程,DataGrid就能够对其中的数据分别按照升.降序进行排列.这种"高级"功能给我们编程提供了许多方便.图01是在WinForm程序中的DataGrid

java中举个向上类型转换,向下类型转换的例子瞧瞧

问题描述 java中举个向上类型转换,向下类型转换的例子瞧瞧 java中举个向上类型转换,向下类型转换的例子看看,谢谢.类型的上下转换仅限父类和子类之间吗基本数据类型之间的转换有上下类型转换这一种说法吗 解决方案 通俗地说,由于继承关系的存在,父类拥有的,子类也拥有:而子类额外有的,父类肯定没有.例如:父类为动物,那么子类阿猫肯定是动物,但是动物不一定是阿猫. Animal a = new Animal();Cat cat = new Cat();a = cat;//可以将子类对象付给父类对象,

ASP实现上一篇,下一篇过程代码

ASP实现上一篇,下一篇过程代码 Rem==上一篇== Rem====================================================== Rem= 参数说明: Rem= pid当前ID,prame:栏目前辍(如一般web_news表,字段时一般为wn_**,prame就代表wn) Rem= ptable(表前辍.如一般表名是:站点名_表名(shenzhe_news) ptable:就代表shenzhe) Rem= 说明:采用上面命名法,可使该过程达到通用 Rem

使用jqMobi开发app基础:Scrolling的使用,向上向下拖动,动态添加数据

官网上Scrolling写的很简单.但自己要使用,却得试验很多次.     例如要实现如下简单的功能:也就是动态加载数据,不管用户向上拖动还是向下拖动,都动态加载数据. 开发app基础:Scrolling的使用,向上向下拖动,动态添加数据-"> 第一步自然是研究demo了.demo一开始就有很多内容. 对应的脚本也很简单: <script> var myScroller; $.ui.ready(function () { myScroller = $("#websli

uitableview-tableView向上向下滚动时,段头视图做出改变

问题描述 tableView向上向下滚动时,段头视图做出改变 (void)scrollViewDidScroll:(UIScrollView *)scrollView { NSLog(@"%lf",scrollView.contentOffset.y); NSInteger m = scrollView.contentOffset.y; if ( m >= 0 ) { UIView *view = (UIView *)[self.view viewWithTag:100]; vi

java自动向上向下转型,手动转型

问题描述 java自动向上向下转型,手动转型 子类 子类对象=new 父类构造函数 对吗 父类 父类对象=(父类)new 子类构造函数 错了吗 解决方案 这样写有好处么,正常写不行??? 解决方案二: 一般都是父类 父类对象=new 子类构造函数() 如果子类重写了父类的方法,调用时相当于调用的是子类重写的那个方法. 解决方案三: 关于java向下转型Java的向下转型java的向下转型

asp.net程序aspnet_client目录下的js失效

问题描述 asp.net程序aspnet_client目录下的js失效2007-11-0523:21系统同时安装.net1.1 和.net2.0时,.net1.1程序的aspnet_client下的WebUIValidation.js和SmartNav.js文件就会失效,验证通过却无法提交.通过比较,有几个地方不同原.net1.1下的WebUIValidation.jsfunctionValidatorCommonOnSubmit(){varresult=!Page_BlockSubmit;Pa

在asp.net mvc 4环境下,使用了bootstrap框架之后,请问如何整合less?

问题描述 在asp.net mvc 4环境下,使用了bootstrap框架之后,请问如何整合less? 在asp.net mvc 4环境下,使用了bootstrap框架之后,请问如何整合less? 解决方案 https://www.zhihu.com/question/37458111/answer/75315700

asp.net 能否在linux 下运行

问题描述 asp.net能否在linux下运行? 解决方案 解决方案二:很显然~不能!.net还没有liunx平台的解决方案三:这个提意不错!解决方案四:不能!解决方案五:不行,php是在liunx下运行的..net好象只能在windows下吧解决方案六:linux下有开源的MONO,再者据说vs2008里有个forlinux的dll,具体没有尝试过解决方案七:你愿意!但是MS不愿意!~~~解决方案八:不是有mono了么?解决方案九:哈哈,当然可以!如果你愿意,还可以把MSIL解释成为JAVA二