文档库 最新最全的文档下载
当前位置:文档库 › GridView分页-存储过程

GridView分页-存储过程

GridView分页-存储过程
GridView分页-存储过程

GridView自定义分页存储过程

要做一个GridView分页的应用,可以前用惯了Sql2005的CET,现在开发的项目用的却是Sql 2000。CET用不了了只好写了一个临时表的存储过程。用存储过程实现GridView分页效果总体分为两大块:一个是存储过程,另一个就是自定义的按钮控件。下面是详细代码。

第一存储过程

存储过程1:从数据库取得要查询记录的总条数

CREATE procedure P_PageSP_TotalNum

@Sql varchar(2000),

@FilterStr varchar(500)

as

declare@Str varchar(2000)

set@Str='

declare @indextable table(id int identity(1,1),nid int);

insert into @indextable(nid) select [ID] from ('+@Sql+' '+@FilterS tr+') as a ;

select count(*) from @indextable'

exec(@Str)

GO

存储过程2:按页取数据

CREATE procedure P_PageSP

@Lower varchar(4), --要查询的下限

@Upper varchar(4), --要查询的上限

@TableName varchar(100), --查询的表名

@OrderBy varchar(200), --排序条件

@FilterStr varchar(1000), --过滤条件

@Sql varchar(2000) --查询语句

AS

declare@Str varchar(2000)

set@Str='

declare @indextable table(id int identity(1,1),nid int);

insert into @indextable(nid) select [ID] from ('+@Sql+' '+@FilterStr +') as a '+@OrderBy+' ;

'+@Sql+' inner join @indextable t on t.nid='+@TableName+'.ID

where t.id > '+@Lower+' and t.id <= '+@Upper+' '

exec(@Str)

GO

第二自定义按钮控件

aspx代码

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="GvPageSe t.ascx.cs" Inherits="Control_GvPageSet" %>

runat="server">1  

runat="server">1

ID="lblTotalNum" runat="server">5

  

首页

上一页

下一页

末页

CS代码

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;

using System.Data.SqlClient;

using https://www.wendangku.net/doc/354018091.html,ponentModel;

public partial class Control_GvPageSet : https://www.wendangku.net/doc/354018091.html,erControl

{

Properties#region Properties

[BrowsableAttribute(true)]

[DescriptionAttribute("要绑定数据的GridView.ID")]

[DefaultValueAttribute("")]

[CategoryAttribute("Appearance")]

public string gvID

{

get

{

return (ViewState["gvID"] == null) ? "" : ViewState["gvID"].To String();

}

set

{

ViewState["gvID"] = value;

}

}

[BrowsableAttribute(true)]

[DescriptionAttribute("每一页显示的行数,默认每页10条")]

[DefaultValueAttribute("")]

[CategoryAttribute("Appearance")]

public int PageSize

{

get

{

return (ViewState["PageSize"] == null) ? 10 : Convert.ToInt32 (ViewState["PageSize"]);

}

set

{

ViewState["PageSize"] = value;

}

}

[BrowsableAttribute(true)]

[DescriptionAttribute("要从中读取数据的https://www.wendangku.net/doc/354018091.html,")]

[DefaultValueAttribute("")]

[CategoryAttribute("Data")]

public string TableName

{

get

{

return (ViewState["TableName"] == null) ? "" : ViewState["Tabl eName"].ToString();

}

set

{

ViewState["TableName"] = value;

}

}

[BrowsableAttribute(true)]

[DescriptionAttribute("要从中读取数据的https://www.wendangku.net/doc/354018091.html,")]

[DefaultValueAttribute("")]

[CategoryAttribute("Data")]

public string OrderBy

{

get

{

return (ViewState["OrderBy"] == null) ? "" : ViewState["OrderB y"].ToString();

}

set

{

ViewState["OrderBy"] = value;

}

}

[BrowsableAttribute(true)]

[DescriptionAttribute("读取数据的Sql语句,多表联合查询")]

[DefaultValueAttribute("")]

[CategoryAttribute("Data")]

public string Sql

{

get

{

return (ViewState["Sql"] == null) ? "" : ViewState["Sql"].ToStr ing();

}

set

{

ViewState["Sql"] = value;

}

}

[BrowsableAttribute(true)]

[DescriptionAttribute("过滤条件,可以为空")]

[DefaultValueAttribute("")]

[CategoryAttribute("Data")]

public string FilterString

{

get

{

return (ViewState["FilterString"] == null) ? "" : ViewState["Fi lterString"].ToString();

}

set

{

ViewState["FilterString"] = value;

}

}

[BrowsableAttribute(false)]

[DescriptionAttribute("当前页数")]

[DefaultValueAttribute("")]

public int CurrentInfo

{

get

{

return Convert.ToInt32(lblCurrentInfo.Text.Trim());

}

}

#endregion

protected override void OnInit(EventArgs e)

{

this.Visible = false;

}

protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

{

//this.lbtnPrev.Enabled = false;

//this.lblCurrentInfo.Text = "1";

}

}

///

///绑定GridView控件,供页面调用

///

public void BindGridView()

{

GetPageNum();

//this.Visible = false;

this.lbtnPrev.Enabled = false;

this.lblCurrentInfo.Text = "1";

BindGV();

}

///

///绑定GridView控件,供页面调用

///

///要显示的当前页

public void BindGridView(int currentInfo)

{

GetPageNum();

//this.Visible = false;

this.lbtnPrev.Enabled = false;

this.lblCurrentInfo.Text = currentInfo.ToString();

BindGV();

}

///

///获取结果总数目和总页数

///

///总页数

public int GetPageNum()

{

SqlParameter[] para = new SqlParameter[2];

SqlParameter p;

p = new SqlParameter("@FilterStr", SqlDbType.VarChar, 500);

p.Value = FilterString;

para[0] = p;

p = new SqlParameter("@Sql", SqlDbType.VarChar, 2000);

p.Value = Sql;

para[1] = p;

int TotalNum = (int)MIS.DAO.PSqlClient.ExecuteScalar(new MIS.DAO. SqlConn().Conn, CommandType.StoredProcedure, "P_PageSP_TotalNum", para);

lblTotalNum.Text = TotalNum.ToString();

int pageNum = Convert.ToInt32(Math.Ceiling(Convert.ToDouble((doub le)TotalNum / PageSize)));

lblCount.Text = pageNum.ToString();

return pageNum;

}

按钮处理事件#region按钮处理事件

/**/

///

///按钮处理事件

///

///

///

public void PageIndex_Changed(object sender, EventArgs e)

{

LinkButton linkbtn = (LinkButton)sender;

switch (linkbtn.ID.Trim())

{

case"lbtnFirst":

this.lblCurrentInfo.Text = "1";

BindGV();

break;

case"lbtnPrev":

this.lblCurrentInfo.Text = (Convert.ToInt32(this.lblCurren tInfo.Text) - 1).ToString();

BindGV();

break;

case"lbtnNext":

this.lblCurrentInfo.Text = (Convert.ToInt32(this.lblCur rentInfo.Text) + 1).ToString();

BindGV();

break;

case"lbtnLast":

this.lblCurrentInfo.Text = this.lblCount.Text;

BindGV();

break;

}

SetBtnState();

}

private void SetBtnState()

{

if (Convert.ToInt32(this.lblCurrentInfo.Text) >= Convert.ToInt32 (this.lblCount.Text) && Convert.ToInt32(this.lblCurrentInfo.Text) <= 1)

{

this.lbtnPrev.Enabled = false;

this.lbtnNext.Enabled = false;

this.lbtnFirst.Enabled = false;

this.lbtnLast.Enabled = false;

}

else if (Convert.ToInt32(this.lblCurrentInfo.Text) >= Convert.ToI nt32(this.lblCount.Text))

{

this.lbtnPrev.Enabled = true;

this.lbtnNext.Enabled = false;

this.lbtnFirst.Enabled = true;

this.lbtnLast.Enabled = false;

}

else if (Convert.ToInt32(this.lblCurrentInfo.Text) <= 1)

{

this.lbtnPrev.Enabled = false;

this.lbtnNext.Enabled = true;

this.lbtnFirst.Enabled = false;

this.lbtnLast.Enabled = true;

}

else

{

this.lbtnPrev.Enabled = true;

this.lbtnNext.Enabled = true;

this.lbtnFirst.Enabled = true;

this.lbtnLast.Enabled = true;

}

}

#endregion

///

///获取数据绑定GridView

///

private void BindGV()

{

int lower, upper;

int currentPage = Convert.ToInt32(lblCurrentInfo.Text.Trim());

lower = (currentPage - 1) * PageSize;

upper = lower + PageSize;

SqlParameter[] para = new SqlParameter[6];

SqlParameter p;

p = new SqlParameter("@Lower", SqlDbType.VarChar, 4);

p.Value = lower.ToString();

para[0] = p;

p = new SqlParameter("@Upper", SqlDbType.VarChar, 4);

p.Value = upper.ToString();

para[1] = p;

p = new SqlParameter("@TableName", SqlDbType.VarChar, 100);

p.Value = TableName;

para[2] = p;

p = new SqlParameter("@FilterStr", SqlDbType.VarChar, 1000);

p.Value = FilterString;

para[3] = p;

p = new SqlParameter("@Sql", SqlDbType.VarChar, 2000);

p.Value = Sql;

para[4] = p;

p = new SqlParameter("@OrderBy", SqlDbType.VarChar,200);

p.Value = OrderBy;

para[5] = p;

DataTable dt = MIS.DAO.PSqlClient.ExecuteDataTable(new MIS.DAO.Sq lConn().Conn, CommandType.StoredProcedure, "P_PageSP", para);

if (dt.Rows.Count == 0)

{

this.Visible = false;

}

else

{

this.Visible = true;

}

GridView gv = (GridView)Page.FindControl(gvID);

gv.DataSource = dt;

gv.DataBind();

SetBtnState();

}

}

第三应用

把自定义控件拖到用于分页的GridView页面上,属性栏设置GridView的各个属性(都有详细的属性说明)。页面CS代码需要绑定GridView的地方调用自定义控件的BindGridView()方法绑定数据(如果是查询页面调用方法之前应先设置控件的FilterStr属性)。

ASPxGridView教程

ASPxGridView 1、数据绑定 一、从左边工具箱中的数据拉出SqlDataSource, 设置你的数据连接 选择你要配置的Select语句 设置完成 二、将ASPxGridView的数据源绑定为SqlDataSource

运行程序, 2、排序和分组 ASPxGridView支持单列或者多列数据分组 分组时需要把settingBehavior.AllowGroup and SettingBehavior.AllowSort属性设置为True 用户可以拖拉列表头到分组面板,分组面板可见性控制在setting.ShowGroupPanel属性 public partial class ASPxGrid : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) ASPxGridView1.GroupBy(ASPxGridView1.Columns["dptName"]); //设置分组的列} } 或者使用分组设置 点击AspxGridView控件->右键–》列–》选中dptName 在属性中选择GroupIndex 把它值改为1 排序ASPxGridView允许用户点击列表头去对数据进行排序,设置AllowSort的属性为true. 3、过滤行 过滤行允许用户通过对单元格录入信息进行行过滤 将Settings.ShowFilterRow 属性设置为True

头过滤 列头可以显示过滤按钮,点击过滤按钮可以条用过滤下拉列表,下拉列表显示当列中的唯一值允许你使用过滤规则。通常情况下,这些按钮是隐藏的,如果要显示这么过滤按钮,必须设置Settings.ShowHeaderFilterButton 的属性为真 ASPxGridView 允许你去建立个性化过滤值,定义过滤规则和实现过滤值在一个过滤列中的下拉过滤。为了达到这个目的,我们必须使用HeaderFilterFillItems 事件。 protected void ASPxGridView1_HeaderFilterFillItems(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewHeaderFilterEventArgs e) { if (object.Equals(e.Column, ASPxGridView1.Columns["dptNo"])) { PrepareQuantityFilterItems(e); return; } } protected virtual void PrepareQuantityFilterItems(DevExpress.Web.ASPxGridView.ASPxGridViewHeaderFilterEventArgs e) { e.Values.Clear(); e.AddValue(string.Format("from {0} to {1}", 1, 2), string.Empty, string.Format("[dptNo] >= {0} and [dptNo] <= {1}", 1, 2)); } 显示结果如下

完整的项目总结报告

完整的项目总结报告 篇一:建筑工程竣工总结报告全 石家庄通用航空产业制造基地 533号试飞检测综合厂房工程 竣 工 报 告 河北科工建筑工程有限公司 年月日 533号试飞检测综合厂房工程 竣工报告 尊敬的各位领导、专家: 你们好!由我单位承建的533号试飞检测综合厂房工程自从XX年4月10日开工以来,经过三年多的精心施工,在质监站、设计、勘察、建设、监理单位的细心指导和帮助下现已完成了该工程,现我代表施工单位就工程的施工情况,向各位领导和验收专家组作简要汇报: 1.工程概况 总体概况 533号试飞检测综合厂房工程位于石家庄市东南部栾城县城西北新厂区内,主体结构钢筋混凝土结构,南附楼层数

为二层,北附楼层数为一层。建筑面积为 6295 m。 建设单位:石家庄飞机工业有限责任公司 质监单位:栾城县建设工程质量监督站 设计单位:中国航空工业规划设计研究院 勘察单位:勘察设计院 监理单位:河北冀通工程建设监理有限公司 施工单位:河北科工建筑工程有限公司 建筑结构设计概况 结构概况 本工程为钢筋混凝土结构,基础采用独立混凝土基础,基础垫层为100厚C15素混凝土,主体结构为C30混凝土,砌体采用MU10页岩多孔砖,水泥砂浆砌筑。 2 2.工程施工情况 本工程从XX年4月 10日开工,XX年6月5日基础完成,并于6月8日通过地基与基础分部工程验收,核定等级合格。于XX年5月5日主体封项,并经业主、设计、质监、监理、施工等单位于11月30共同 验收,核定主体分部工程为合格,通过项目部全体职工的精心施工,工程于XX年11月30日顺利竣工,并于12月20日经业主、监理、施工等单位进行竣工初验。 该工程自开工以来项目部全体以严谨的工作态度,精心组织施工,按设计文件和现行的标准、规范来约束自己的

数据库分页SQL语句

数据库分页SQL语句 博客分类: 数据库 数据库分页语句 SQL Server --------------------------------------------------------------------------------- 从数据库表中的第M条记录开始取N条记录,利用Top关键字:注意如果Select语句中既有top,又有order by,则是从排序好的结果集中选择: SELECT * FROM ( SELECT Top N * FROM (SELECT Top (M + N - 1) * FROM 表名称 Order by 主键 desc) t1 ) t2 Order by 主键 asc 例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下: SELECT * FROM ( SELECT TOP 20 * FROM (SELECT TOP 29 * FROM Sys_option order by sys_id desc) t1) t2 Order by sys_id asc Oralce数据库 -------------------------------------------------------------------------------- 从数据库表中第M条记录开始检索N条记录 SELECT * FROM (SELECT ROWNUM r,t1.* From 表名称 t1 where rownum < M + N) t2 where t2.r >= M 例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下: SELECT * FROM (SELECT ROWNUM R,t1.* From Sys_option where rownum < 30 ) t2 Where t2.R >= 10 如果你对Oracle数据库分页不是很熟悉的话,本页后面有专门对Oracle分页技术的讲解。 My sql数据库 --------------------------------------------------------------------------------------------- My sql数据库最简单,是利用mysql的LIMIT函数,LIMIT [offset,] rows从数据库表中M条记录开始检索N条记录的语句为:

GridView使用大全

GridView无代码分页排序 GridView选中,编辑,取消,删除 GridView正反双向排序 GridView和下拉菜单DropDownList结合 GridView和CheckBox结合 鼠标移到GridView某一行时改变该行的背景色方法一 鼠标移到GridView某一行时改变该行的背景色方法二 GridView实现删除时弹出确认对话框 GridView实现自动编号 GridView实现自定义时间货币等字符串格式 GridView实现用“...”代替超长字符串 GridView一般换行与强制换行 GridView显示隐藏某一列 GridView弹出新页面/弹出新窗口 GridView固定表头(不用javascript只用CSS,2行代码,很好用) GridView合并表头多重表头无错完美版(以合并3列3行举例)GridView突出显示某一单元格(例如金额低于多少,分数不及格等)GridView加入自动求和求平均值小计 GridView数据导入Excel/Excel数据读入GridView 在对GridView编辑的时候实现自动计算 实现类似winform的点击行选中功能 GridView在编辑的时候控制编辑框的列宽。 给Gridview加入Tooltip的功能 1.GridView无代码分页排序:

1.AllowSorting设为True,aspx代码中是AllowSorting="True"; 2.默认1页10条,如果要修改每页条数,修改PageSize即可,在aspx代码中是PageSize="12"。 3.默认的是单向排序的,右击GridView弹出“属性”,选择AllowSorting为True即可。 2.GridView选中,编辑,取消,删除: 效果图: 后台代码: 你可以使用sqlhelper,本文没用。代码如下: using System; using System.Data;

GridView使用总结

GridView控件用来在表中显示数据源的值。每列表示一个字段,而每行表示一条记录。GridView控件支持下面的功能: ?绑定至数据源控件,如SqlDataSource。 ?内置排序功能 ?内置更新与删除功能 ?内置分页功能 ?内置行选择功能 ?以编程方式访问GridView对象模型以动态设置属性、处理事件等。 ?多个键字段。 ?用于超链接列的多个数据字段。 ?可以通过主题和样式进行自定义外观。 GridView控件中的每一列由一个DataControlField对象表示。 默认情况下,AutoGenerateColumns属性被设置为true,表示为数据源中的每个字段自动创建绑定字段,自动生成的绑定列字段不会添加到Columns集合中。 通过将AutoGenerateColumns属性设置为false,然后创建自定义的Columns集合,您可以手动定义列字段,而不是让GridView控件自动生成列字段。除了绑定列字段外,您还可以显示按钮列字段、复选框列字段、命令字段、超链接列字段、图像字段或基于您自己的自定义模板的列字段。 下表列出了可以使用的不同列字段类型。

自定义用户界面 您可以通过设置GridView控件的不同部分的样式属性自定义该控件的外观。下表列出了不同的样式属性。 也可以显示或隐藏控件的不同部分。下表列出控制显示或隐藏哪些部分的属性。 事件

GridView控件提供多个您可以对其进行编程的事件。这使您可以在每次发生事件时都运行一个自定义例程。下表列出了GridView控件支持的事件。 事件说明 PageIndexChanged在单击某一页导航按钮时,但在GridView控件处理分页操作之后发生。此 事件通常用于以下情形:在用户定位到该控件中的另一页之后,您需要执行 某项任务。 从10个按钮里面随便选择一个的情况 PageIndexChanging在单击某一页导航按钮时,但在GridView控件处理分页操作之前发生。此 事件通常用于取消分页操作。 RowCancelingEdit在单击某一行的??取消”按钮时,但在GridView控件退出编辑模式之前发 生。此事件通常用于停止取消操作。 RowCommand当单击GridView控件中的按钮时发生。此事件通常用于在控件中单击按钮 时执行某项任务。 RowCreated当在GridView控件中创建新行时发生。此事件通常用于在创建行时修改行 的内容。 RowDataBound在GridView控件中将数据行绑定到数据时发生。此事件通常用于在行绑定 到数据时修改行的内容。 RowDeleted在单击某一行的“删除”按钮时,但在GridView控件从数据源中删除相应记 录之后发生。此事件通常用于检查删除操作的结果。 RowDeleting在单击某一行的“删除”按钮时,但在GridView控件从数据源中删除相应记 录之前发生。此事件通常用于取消删除操作。 RowEditing发生在单击某一行的“编辑”按钮以后,GridView控件进入编辑模式之前。 此事件通常用于取消编辑操作。 RowUpdated发生在单击某一行的“更新”按钮,并且GridView控件对该行进行更新之后。 此事件通常用于检查更新操作的结果。 RowUpdating发生在单击某一行的“更新”按钮以后,GridView控件对该行进行更新之前。 此事件通常用于取消更新操作。

软件工程师实习心得体会及收获【完整版】

软件工程师实习心得体会及收获 ----WORD文档,下载后可编辑修改复制---- Ctrl+D收藏本站,我们将第一时间为大家提供更多关于2019年实习报告的信息,敬请期待! 点击查看:实习报告网 相关推荐:实习报告范文| 实习报告模板| 会计实习报告 | 大学生实习报告 | 顶岗实习报告 | 金工实习报告 | 毕业实习报告 | 土木工程实习报告 | 生产实习报告 |实习周记 | 3000字范文 软件工程师实习心得体会及收获 2019年11月下旬,我离开了学校,进入了最后一学期的顶岗实习阶段。从离开学校的那天起,我就当自己是一个正式的员工,做好了经历重重困难的准备,我始终坚信,我的努力与坚持不懈不会白费,我的未来不是梦。 一、实习单位介绍: 南京智风多媒体有限公司是我现在实习的单位,它成立于1998年,是从事教育软件、数字化教学资源、多媒体产品等开发、制作的专业公司;是江苏省信息产业厅认定的双软企业、江苏省新闻出版局审核认定的电子出版物开发制作单位。公司长期承担高校及教育管理部门的数字化教学资源、教务教学、实验科研等管理系统的开发和信息化项目建设。如:《数字化教学资源库-名师名课网系统》、《OA办公系统》等多个系统平台。智风公司多年来致力于网络课程的建设服务工

作,拥有一支专业化的开发团队,通过严格的开发流程和创新的教学理念为广大院校提供优质的服务。专业化的研发队伍:从教学设计、技术开发,到交互设计、视觉设计、资源素材制作等各个方面,全面解决您的后顾之忧;丰富的开发经验:业已开发的课程中有42门被评为精品课程,累计开发的网络课程已逾1000门。 二、实习岗位、主要过程、主要内容、主要工作、收获 我在该公司任职软件开发工程师,刚实习的第一个星期,主要的工作是熟悉公司的开发框架及开发流程,及时完成项目经理派发的任务。从第二个星期开始,我就开始接触公司的开发项目。令我印象最深、体会也最深的一个项目是《南京大学110周年校庆系统》。该项目不仅开发时间短(只有一个月的时间),最主要的是需求不清。在客户与公司的双重压力下,我们这组人(共5人)在与客户只沟通了两次的需求下,我们就开始动工。该项目的用户主要分为校领导和嘉宾。针对校领导和嘉宾进行相应的车辆、餐厅、宾馆、会场、时间、志愿者的安排,要有冲突提示功能。如:在一个重叠的时间段内,一个人不能同时参加两项及以上活动;一辆车安排的人数不能超过他的承载数等等。在做这些功能的时候,我们有过以人为基础,分配车辆、餐厅等资源,也有考虑过以资源为主,分配人员等种种意见。在每一次意见有了分歧以后,我们都要讨论,各抒己见。这种方式使我乐于表达自己的想法,当我的想法得到了其他同事的认可时,那种感觉无法用言语来表达。即使是自己的想法错了,但听到同事的另一番看法,使我茅塞顿开,也有了收获的喜悦。由于项目太紧,我们经常加班,每

基于.NET的Web程序设计知识点总结

1.网站中的Global.asax文件(如果有的话)必须放在应用程序的根目录下(T) 2.利用DetailsView控件添加记录特别方便,因为不需要另外增加输入框(T) https://www.wendangku.net/doc/354018091.html,只是ADO的简单升级(F) 4.数据集(DataSet)能够在断开与数据源连接的情况下工作(T) https://www.wendangku.net/doc/354018091.html,采用的是代码分离模式(T) 6.离开了网站,aspx页面可以单独运行(F) 7.离开了IIS服务器,.htm页面可以单独运行(T) 8.在DetailsView中不能显示符合条件的多条记录(F) 9.Web服务器控件的几个按钮都可以起到向服务器提交数据的作用(T) 10.XML是一种编程语言(F) 1.服务器控件的AutoPostBack属性的含义是选择服务器控件时,是否自动回送。 。 2.要求在某文本框中输入密码,一般要将该TextBox控件的TextMode属性设置为 Password 。 3.Page对象的IsPostBack属性的含义是指示该页是否正为响应客户端回发而加载,或者是否正被首次 加载和访问。如果是响应客户端回发而加载,其值为True,否则为False。 4.Response对象在使用时是通过使用Page对象的Response属性而达到的。 https://www.wendangku.net/doc/354018091.html,中的页面跳转可以通过Response对象的Redirect方法实现。 https://www.wendangku.net/doc/354018091.html,中存储页面间共享的变量可以通过Session对象或Application对象实现。 7.存储过程的英文原词为Stored Procedure。 https://www.wendangku.net/doc/354018091.html,包含的5大对象为Connection,Command,DataReader, DataAdapter,DataSet 。 9.使用SqlConnection对象连接到本地的数据库服务器上的Northwind数据库时,如果使用集成 Windows的身份验证模式,则连接字符串的写法为: SqlConnection conn=new SqlConnection("Data Source=.;Initial Catalog=Northwind;Integrated Security=True ");。 10.下面是设置和取出Session对象的代码。 设置Session的代码是: Session[“greeting”]=”hello wang!”; 取出该Session的对象的语句如下: String greeting=Session["greeting"].ToString(); 11.App_Data目录用来放置() A.共享的数据库文件 B.共享文件 C.被保护的文件 D.代码文件 12.文件系统网站非常适合学习使用,因为() A.不需要安装IIS B.网站允许放置在任意目录下 C.能够进行单独测试 D.A+B 13.下面哪种后缀是静态网页文件() A.asp B.aspx C.htm D.jsp 14.在配置GridView控件的SqlDataSource数据源控件过程中,单击【高级】按钮的目的是()A.打开其他窗口 B.输入新参数C.生成SQL编辑语句 D.优化代码 15.SiteMapDataSource能否用来访问() A.关系型数据 B.层次性数据 C.字符串数据 D.数值型数据

T-SQL 经典行专列、列转行,分页及存储过程

T-SQL 经典编程 说明:本实例是以SQL Server 2005 为运行环境的。 准备工作:创建一个名为DB 的数据库(CREATE DATABASE DB)。 一、T-SQL 行转列 1、创建如下表 CREATE TABLE [Scores] ( [ID] INT IDENTITY(1,1),--自增标识 [StuNo] INT,--学号 [Subject] NVARCHAR(30),--科目 [Score] FLOAT--成绩 ) GO INSERT INTO [Scores] SELECT 100,'语文', 80 UNION SELECT 100,'数学', 75 UNION SELECT 100,'英语', 70 UNION SELECT 100,'生物', 85 UNION SELECT 101,'语文', 80 UNION SELECT 101,'数学', 90 UNION SELECT 101,'英语', 70 UNION SELECT 101,'生物', 85 CREATE TABLE [Student] ( [ID] INT IDENTITY(100,1),--自增标识,学号 [StuName] NVARCHAR(30),--姓名 [Sex] NVARCHAR(30),--性别 [Age] CHAR(2)--年龄) GO INSERT INTO [Student] SELECT'张三','男', 80 UNION SELECT'李四','女', 75 两表的数据如下图:

2、通过CASE…WHEN 语句和GROUP BY…聚合函数来实现行转列 SELECT StuNo AS'学号', MAX(CASE Subject WHEN'语文'THEN Score ELSE 0 END)AS'语文', MAX(CASE Subject WHEN'数学'THEN Score ELSE 0 END)AS'数学', MAX(CASE Subject WHEN'英语'THEN Score ELSE 0 END)AS'英语', MAX(CASE Subject WHEN'生物'THEN Score ELSE 0 END)AS'生物', SUM(Score)AS'总分', AVG(Score)AS'平均分' FROM dbo.[Scores] GROUP BY StuNo ORDER BY StuNo ASC 结果如下图: 3、通过JOIN…ON 实现两表联接,显示出学生姓名 SELECT MAX(StuNo)AS'学号', StuName AS'姓名', MAX(CASE Subject WHEN'语文'THEN Score ELSE 0 END)AS'语文', MAX(CASE Subject WHEN'数学'THEN Score ELSE 0 END)AS'数学', MAX(CASE Subject WHEN'英语'THEN Score ELSE 0 END)AS'英语', MAX(CASE Subject WHEN'生物'THEN Score ELSE 0 END)AS'生物', SUM(Score)AS'总分', AVG(Score)AS'平均分' FROM dbo.[Scores] A join [Student] B on(A.StuNo=B.ID)

软件项目总结报告

2?开发的反复性比较多。

我们只需要修改GhdGridView 控件的样式,系统中的所有继承自GhdGridView 的表格样式都可以改变。 5.系统开发框架:此系统的框架使用的是简单三层结构,此框架在开发一些中小软件是比较实用的。但是我们要是可以开发出自己的框架,把一些通用的功能开发到框架中。这样以来,在以后的系统开发中,针对系统中一些通用的功能就不需要再开发,从而也可以很好的提高我们的开发效率;减少很多维护费用。使我们的技术不断的更加成熟。 6.系统安全加密:此系统中针对客户提出的系统安全问题,我们采用了Ikey加密硬件钥匙来验证客户端登 陆客户的合法性,此Ikey钥匙可以绑定到一个系统使用用户,也可以让多个用户来使用一个加密钥匙来验证登陆系统的合法性。这样以来,即使用户的密码不慎丢失,或者被不法人员取得(不法人员他也是无法 登陆到我们的系统中来),这样就最大的提高了我们系统的安全性。Ikey加密钥匙是很好的加密B/S架构软 件的硬件工具,在以后的软件安全方面可以借鉴。 3项目经验总结 签定合同 一个项目的开发成败或者说项目开发带来效益的大小,在很大程度上是受项目合同签定的影响的。往往,很多一部分公司与客户签定的项目合同都是很模糊的,也很难签定的比较清楚,这样以来就会导致在项目的开发后期,工作两会越来越大,影响项目的竣工周期;而且,项目的开发费用一般是不会变的。这样以来,我们就大大的降低了我们的开发效益。虽然需求范围很难签定的明确,但是我们在签定合同时,要尽量的去把合同功能边界和添加新功能的条件签定。 开发团队 在项目确立后,要尽快的建立起项目开发团队。 项目团队成员的团结合作、相互沟通是非常重要的,团队成员之间要相互学习彼此的优点和技术,使团队的能力不断的提高。这样,在项目的开发过程中,团队才不会被难题困住不动。另外,团队中要有一个项目负责人,这个人无论是在与客户的沟通上,还是在技术上都要是很出众的人,此项目负责人要能很好的沟通客户与开发成员之间,以此来更好的理解客户的功能需求。人的记忆力总是有限的,所以就要求开发团队成员要尽量的书写一些开发文档,这些文档往往是我们在项目开发后期要用到的可寻资料。项目团队士气是项目成功的一个因素,我们需要不断的来培养我们的团队气势,使我们的团队不断的壮大。需求的调研

如何实现GridView的手动分页

如何实现GridView的手动分页 我们可以这样做。先要在Html界面中GridView中增加AllowPaging="True"接着做下面的 //在page_load事件中将GridView绑定数据库 protected void Page_Load(object sender, EventArgs e) { string sqlstr=select * from TABLE; sqlconnection conn=new sqlconnection("数据库连接字串"); DataSet mydataset = new DataSet(); SqlDataAdapter myds = new SqlDataAdapter(); myds.SelectCommand = new SqlCommand(sqlstr, conn); myds.Fill(mydataset); this.GridView1.DataSource = mydataset; mydataset.Dispose(); myds.Dispose(); conn.Close(); conn.Dispose(); GridView1.DataBind(); } //GridView有一个PageIndexChanging事件 protected void GridView1_PageIndexChanging(object sender, GridViewPag eEventArgs e) { GridView1.PageIndex = e.NewPageIndex; GridView1.DataBind(); } 这样就可以实现啦! 要使用手动分页前提是GridView没有使用数据源控件(sqldatasource.....)的时候。 请教GridView的手动分页如何实现?谢谢! 请教GridView的手动分页(自定义分页)如何实现? 比如已知有10000条数据,我要GridView的分页功能来显示数据,但是自动分页功能需要每次都取出全部的10000条数据,这样效率不高, 所以就要求只用设置GridView的分页数如1000页(每页10知),当选择第n页时才从数据库中取出对应的数据,请问怎样实现? 谢谢! https://www.wendangku.net/doc/354018091.html,结合存储过程写的通用搜索分页程序

oracle千万级数据分页存储过程优化

oracle千万级数据分页存储过程优化 随着数据量的增加,Oracle数据库分页存储过程(使用rownum分页)查询性能越来越差,查询时间也越来越长,于是优化势在必行,结合用户一般使用特点(一般看前几页的较多),于是以此为切入点优化原先的存储过程,在WHERE条件中增加rownum<=pageindex*pageSize,减少首次过滤的数据量,调整后的存储过程如下:CREATE OR REPLACE PACKAGE DotNet is TYPE type_cur IS REF CURSOR; --定义游标变量用于返回记录集 PROCEDURE DotNetPagination_New(Pindex in number, --分页索引 Psql in varchar2, --产生dataset的sql语句 Psize in number, --页面大小 v_cur out type_cur --返回当前页数据记录 ); procedure DotNetPageRecordsCount_New(Psqlcount in varchar2, --产生dataset的sql语句

Prcount out number --返回记录总数 ); end DotNet_New; CREATE OR REPLACE PACKAGE BODY DotNet is PROCEDURE DotNetPagination(Pindex in number, Psql in varchar2, Psize in number, v_cur out type_cur) AS v_sql VARCHAR2(4000); v_count number; v_Plow number; v_Phei number; v_Appsql varchar2(1000); Begin v_Phei := Pindex * Psize + Psize; v_Plow := v_Phei - Psize + 1; --优化的地方-------------- v_Appsql := ''; if (Pindex < 1000) then v_Appsql := ' and rownum <= ' || v_Phei; end if;

GridView介绍

CommandName 值 说明 “Cancel” 取消编辑操作并将GridView 控件返回为只读模式。引发RowCancelingEdit 事件。 “Delete” 删除当前记录。引发RowDeleting 和RowDeleted 事件。 “Edit” 将当前记录置于编辑模式。引发RowEditing 事件。 “Page” 执行分页操作。将按钮的CommandArgument 属性设置为“First”、“Last”、“Next”、“Prev”或页码,以指定要执行的分页操作类型。引发PageIndexChanging 和PageIndexChanged 事件。 “Select” 选择当前记录。引发SelectedIndexChanging 和SelectedIndexChanged 事件。 “Sort” 对GridView 控件进行排序。引发Sorting 和Sorted 事件。 “Update” 更新数据源中的当前记录。引发RowUpdating 和RowUpdated 事件。 再实现其中的事件即可。 也可以实现RowCommand事件,通过比对CommandName属性值实现方法,但是在其中无法获取cell[?]的值? GridView中如何控制ButtonField栏的状态? 2007-01-26 16:32 .......... ******************* protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowIndex > -1) { DataRowView rv = (DataRowView)e.Row.DataItem; if (rv["field1"].ToString() == "1") ((LinkButton)e.Row.Cells[0].Controls[0]).Enabled = false;

DevExpress GridControl使用方法总结

一、如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二、如何新增一条记录 (1)、gridView.AddNewRow() (2)、实现gridView_InitNewRow事件 三、如何解决GridControl记录能获取而没有显示出来的问题gridView.populateColumns(); 四、如何让行只能选择而不能编辑(或编辑某一单元格) (1)、View->OptionsBehavior->EditorShowMode 设置为:Click (2)、View->OptionsBehavior->Editable 设置为:false 五、如何禁用GridControl中单击列弹出右键菜单 设置Run Design->OptionsMenu->EnableColumnMenu 设置为:false 六、如何隐藏GridControl的GroupPanel表头 设置Run Design->OptionsView->ShowGroupPanel 设置为:false 七、如何禁用GridControl中列头的过滤器 过滤器如下图所示: 设置Run Design->OptionsCustomization->AllowFilter 设置为:false 八、如何在查询得到0条记录时显示自定义的字符提示/显示 如图所示:

方法如下: //When no Records Are Being Displayed private void gridView1_CustomDrawEmptyForeground(object sender, CustomDrawEventArgs e) { //方法一(此方法为GridView设置了数据源绑定时,可用) ColumnView columnView = sender as ColumnView; BindingSource bindingSource = this.gridView1.DataSource as BindingSource; if(bindingSource.Count == 0) { string str = "没有查询到你所想要的数据!"; Font f = new Font("宋体", 10, FontStyle.Bold); Rectangle r = new Rectangle(e.Bounds.Top + 5, e.Bounds.Left + 5, e.Bounds.Right - 5, e.Bounds.Height - 5); e.Graphics.DrawString(str, f, Brushes.Black, r); } //方法二(此方法为GridView没有设置数据源绑定时,使用,一般使用此种方法) if (this._flag) { if (this.gridView1.RowCount == 0) { string str = "没有查询到你所想要的数据!"; Font f = new Font("宋体", 10, FontStyle.Bold); Rectangle r = new Rectangle(e.Bounds.Left + 5, e.Bounds.Top + 5, e.Bounds.Width - 5, e.Bounds.Height - 5); e.Graphics.DrawString(str, f, Brushes.Black, r); } } }

条件分支结构、循环控制结构和存储过程--分页存储过程oracle

条件分支结构、循环控制结构和存储过程--分页存储过程oracle 条件分支结构案例 1、编写一个过程,可以输入一个雇员姓名,如果该雇员的工资低于2000,就给该雇员工资增加10%。 /* 结构: IF 条件THEN 执行语句; END IF; */ CREATE OR REPLACE PROCEDURE add_sal_prc(p_name IN VARCHAR2) IS n_sal myemp.sal%TYPE; BEGIN SELECT sal INTO n_sal FROM myemp WHERE ename = p_name; IF n_sal < 2000 THEN UPDATE myemp SET sal = sal * (1 + 0.1) WHERE ename = p_name; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.put_line('未找到相关信息.'); END add_sal_prc; / 2、编写一个过程,在myemp表中,如果某个雇员的工资低于2000,就给该雇员工资增加10%。 CREATE OR REPLACE PROCEDURE update_myemp_sal_prc IS CURSOR c_test IS SELECT * FROM myemp FOR UPDATE; BEGIN FOR var_data IN c_test LOOP IF var_data.sal < 2000 THEN UPDATE myemp SET sal = sal * 1.1 WHERE CURRENT OF c_test; END IF; END LOOP; EXCEPTION

DevExpress控件的GridControl控件小结

目录 1. DevExpress控件组中的GridControl控件不能使横向滚动条有效。 (2) 2. 使单元格不可编辑。 (2) 3. 没有下拉滚动条事件怎么办? (2) 4. 获取选定行,指定列单元格的内容 (2) 5. 去除"Drag a Column Header Here To Group by that Column" (3) 6. 在gridcontrol中添加checkbox复选框 (3) 7. 单元格合并问题 (4) 8. gridView 奇行与偶行交替变色 (4) 9. girdView在第一列显示行号 (4) 10. 选中某列进行排序时,如何让该列高亮显示 (5) 11. XtraGrid冻结列 (5)

(由于开始使用DevExpress控件了,所以要点滴的记录一下) 1.DevExpress控件组中的GridControl控件不能使横向滚动条有效。 现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容。 解决: gridView1.OptionsView.ColumnAutoWidth属性是true,即各列的宽度自动调整,你把它设成false,就会出现了。 2.使单元格不可编辑。 gridcontrol -->gridview -->OptionsBehavior -->Editable=false 3.没有下拉滚动条事件怎么办? 现象:因为需要加载大数据量数据,所以不能一次把所有数据读入datatable进行绑定,所以决定在用户进一步浏览数据时进行数据的实时加载工作,就是每当用户拉动滚动条时,多加载一些数据进入datatable.没有找到合适的滚动条事件,于是用这个事件代替了,非常合适我的需求. TopRowChanged事件. 4.获取选定行,指定列单元格的内容 private string GetSelectOID() { int[] pRows = this.gridView1.GetSelectedRows(); if (pRows.GetLength(0) > 0) return gridView1.GetRowCellValue(pRows[0], mOIDFiledName).ToString (); else return null; } //mOIDFiledName为要获取列的列名

经过优化测试的SQL分页存储过程

经过优化测试的SQL分页存储过程 2009-10-24 23:20 建立一个 Web 应用,分页浏览功能必不可少。这个问题是数据库处理中十分常见的问题。经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页。但这种分页方法仅适用于较小数据量的情形,因为游标本身有缺点:游标是存放在内存中,很费内存。游标一建立,就将相关的记录锁住,直到取消游标。游标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条件的不同进行不同的操作。而对于多表和大表中定义的游标(大的数据集合)循环很容易使程序进入一个漫长的等待甚至死机。 更重要的是,对于非常大的数据模型而言,分页检索时,如果按照传统的每次都加载整个数据源的方法是非常浪费资源的。现在流行的分页方法一般是检索页面大小的块区的数据,而非检索所有的数据,然后单步执行当前行。 最早较好地实现这种根据页面大小和页码来提取数据的方法大概就是“俄罗斯存储过程”。这个存储过程用了游标,由于游标的局限性,所以这个方法并没有得到大家的普遍认可。 后来,网上有人改造了此存储过程,下面的存储过程就是结合我们的办公自动化实例写的分页存储过程: CREATE procedure pagination1 (@pagesize int, --页面大小,如每页存储20条记录 @pageindex int --当前页码 ) as set nocount on begin declare @indextable table(id int identity(1,1),nid int) --定义表变量declare @PageLowerBound int --定义此页的底码 declare @PageUpperBound int --定义此页的顶码 set @PageLowerBound=(@pageindex-1)*@pagesize set @PageUpperBound=@PageLowerBound+@pagesize set rowcount @PageUpperBound insert into @indextable(nid) select gid from TGongwen where fariqi >dateadd(day,-365,getdate()) order by fariqi desc select O.gid,O.mid,O.title,O.fadanwei,O.fariqi from TGongwen O,@indextable t where O.gid=t.nid and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id end set nocount off

GridView分页系列

GridView分页系列 1:GridView自带分页:GridView自带的分页,是假分页,他每次从数据库把数据全部查询出之后,通过分页的算法,进行按每页数量进行分页。 分页的属性元素:分页功能的实现就是通过对这些属性元素的操作实现的。 //this.GvShow.PageIndex 当前页的索引 //this.GvShow.PageCount 总共的页数 //this.GvShow.Rows.Count 当前页签内的gridview的行数 //this.GvShow.PageSize 每页的记录数 //this.GvShow.PageIndex*this.GvShow.rows.count + 1 行索引 设置普通的GridView分页:属性AllowPaging="True"、PageSize="2"设置分页事件onpageindexchanging="GvShow_PageIndexChanging" 后台方法绑定: protected void GvShow_PageIndexChanging(object sender, GridViewPageEventArgs e) { this.GvShow.PageIndex = e.NewPageIndex; BindView(); } 2:自定义样式的GridView自带分页: 普通的GridView自带的分页,不带样式,只是普通的1,2,3等,如果希望获取到具有其他分页样式就应该设置属性 <%--FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PreviousPageText="上一页"--%> 后台访问此属性的实例: this.GvShow.PagerSettings.FirstPageText = "首页"; https://www.wendangku.net/doc/354018091.html,stPageText = "尾页"; this.GvShow.PagerSettings.NextPageText = "下一页"; this.GvShow.PagerSettings.PreviousPageText = "上一页"; this.GvShow.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast; 通过属性可以设置GRIDVIEW分页的样式 3:在分页模板中自定义分页的样式,虽然微软开辟了这个模板提供给用户类似于自定义分页的功能,但这个功能完全还是基于微软的GridView自带的分页进行的,属性的Visable的属性必须是true AllowPaging="true" 与PageSize="3"属性页都要进行相关的有效设置才可以。这种情况下的分页可以不使用onpageindexchanging="GvShow_PageIndexChanging"微软自带的分页事件,开发自己独立的分页事件与方法即可 范例: 前台代码:

相关文档
相关文档 最新文档