金色海洋工作室
asp.net经验之谈、数据库等相关技术
博客园
::
首页
:: ::
联系
::
订阅
::
管理
posts - 201, comments - 3529, trackbacks - 73
公告
我的QQ:513281121。
MSN:jyk0011@live.cn
<
2008年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
最新评论
我的标签
留言簿
给我留言
查看留言
我参加的小组
设计模式
女程序员之家
Web技术联盟
写书译书小组
LumaQQ.NET
博客园精华集出版小组
沈阳.NET俱乐部
你必须知道的.NET
道不远人
我参与的团队
沈阳.NET俱乐部(0/0)
Visual Basic 团队(0/0)
东北.NET俱乐部(0/0)
我的标签
分页控件
(9)
数据访问
(7)
ado.net
(7)
分页
(6)
自定义控件
(5)
分页算法
(3)
asp.net
(3)
myPage
(3)
表单控件
(2)
权限设计
(2)
更多
随笔分类
(213)
《必须知道的.net》读后感(8)
asp.net的使用技巧(11)
个人理财小助手(4)
基础知识(4)
面向过程与面向对象(15)
数据访问 ado.net1.0 (14)
数据访问 ado.net2.0(7)
通用权限(18)
心情驿站(43)
转载专区(5)
资源下载(3)
自定义控件(5)
自定义控件—表单控件(17)
自定义控件—分页控件(31)
自然架构(28)
随笔档案
(187)
2009年7月 (2)
2009年6月 (23)
2009年5月 (17)
2009年4月 (4)
2009年3月 (1)
2009年2月 (1)
2009年1月 (9)
2008年10月 (4)
2008年9月 (15)
2008年8月 (14)
2008年7月 (22)
2008年6月 (8)
2008年5月 (8)
2008年4月 (9)
2008年3月 (2)
2008年2月 (7)
2008年1月 (7)
2007年12月 (2)
2007年11月 (2)
2007年10月 (1)
2007年9月 (3)
2007年8月 (3)
2007年7月 (3)
2007年5月 (3)
2007年4月 (7)
2007年3月 (4)
2007年2月 (3)
2006年8月 (3)
最新随笔
1. 【自然框架】之“元数据”的威力
2. 【自然框架】之通用权限的Demo(二):添加人员、添加账户、添加角色里面的账户以及列表的权限验证
3. 【自然框架】之“解耦”初探
4. 使用接口来统一控件的取值、赋值和初始化
5. 【自然框架】表单控件 之 一个表单修改多个表里的记录
6. 【自然框架】之 “表单控件”与“实体类”
7. 【自然框架】之鼠标点功能现(二):表单控件的“应用”—— 代码?只写需要的!
8. 【自然框架】之鼠标点功能现(一):单表的增删改查(即上次5月23日活动的一个主题)【Demo、源码下载】
9. 主流想法、我的想法,和自我检讨
10. 弱弱问一下,这两个图,是不是传说中的ER图呀?
11. 【自然框架】之通用权限的Demo(一):角色的添加和修改
12. 辩论赛 VS 讨论组
13. 【自然框架】之通用权限(九):权限的验证
14. 【自然框架】之通用权限(八):权限到字段(列表、表单、查询)
15. 【自然框架】之通用权限(七):权限到按钮
积分与排名
积分 - 539489
排名 - 50
最新评论
1. Re:【自然框架】之“元数据”的威力
[quote]Kain:vs的强项是可以不用手写任何代码,拖一拖,拉一拉就可以搞定了。但是真正的项目里面有几个个人用到了?SqlDataSource不就是个鸡肋么?[/quote] vs真是个可怜的工...
--winter-cn
2. re: 【自然框架】之“元数据”的威力
这么多年了,该出来了,哈哈。
神州不就把笔记本市场给搅和了一下吗,然后笔记本就都降价了。
--金色海洋(jyk)
3. re: 【自然框架】之“元数据”的威力
这东西几年前就有,只是知道的人都不拿出来,拍的是影响市场发展,发展过快.
而且MS自己也不喜欢别人做它自己的生意.
就说到这里吧
--JacksonLin
4. re: 通用权限相关文档的下载【2009.7.2更新】
呵呵 不错!
--coolxlc
5. re: 【自然框架】之“元数据”的威力
"生成模板的界面" 这个是什么意思呢?
--金色海洋(jyk)
6. re: 【自然框架】之“元数据”的威力
你这个东东,看来是我想要的,再参考一下ror和django,你提出了自然,我的想法差不多,我希望注重开发过程中的"流畅"对开发人员友好,比如在用ror或是django生成模板的界面...
--lexus
7. re: 【自然框架】之通用权限的Demo(二):添加人员、添加账户、添加角色里面的账户以及列表的权限验证
@HOH
感谢您的理解!
--金色海洋(jyk)
8. re: 【自然框架】之“元数据”的威力
--引用-------------------------------------------------- 陈海飞: 实体类可以不用代码生成器提前生成。 你可以根据数据库的元数据去动态执行代码生成实...
--金色海洋(jyk)
9. re: 【自然框架】之通用权限的Demo(二):添加人员、添加账户、添加角色里面的账户以及列表的权限验证
你说话不这么尖酸刻薄会死人啊,每个人都有自己的工作,有自己的私人事情,别人没有义务要按时或者说及时放出DEMO。
--HOH
10. re: 【自然框架】之“元数据”的威力
实体类可以不用代码生成器提前生成。
你可以根据数据库的元数据去动态执行代码生成实体类。
--陈海飞
11. re: 【自然框架】之“元数据”的威力
你没有仔细看我的代码吧,呵呵。
如果我的和 SqlDataSource 一样,我还费这个尽干什么呢?
--金色海洋(jyk)
12. re: 【自然框架】之“元数据”的威力
貌似很多人问过图怎么画的
呵呵,office2007的一些功能还是很多人不知道哦
--徐少侠
13. re: 【自然框架】之“元数据”的威力
vs的强项是可以不用手写任何代码,拖一拖,拉一拉就可以搞定了。但是真正的项目里面有几个个人用到了?SqlDataSource不就是个鸡肋么?
--Kain
14. re: 【自然框架】之“元数据”的威力
其实带不带权限,只是一个查询条件的问题,加上查询条件,就是权限过滤了。
--金色海洋(jyk)
15. re: 【自然框架】之“元数据”的威力
楼主补的这张图,和我想的还是不大一样。
我觉得应当是,权限控制菜单,菜单控制所有后面的东西。
因为我们可以依据权限,动态地建立菜单。
--hxmhj
阅读排行榜
1. 三层架构之我见 —— 不同于您见过的三层架构。(11038)
2. 通用权限的思路。带有数据库关系图(7086)
3. “数据访问函数库”(DataAccessLibrary for .net2.0 )源代码下载 09.06.15更新(6513)
4. 我自己写的一个分页控件(源码和演示代码)PostBack分页版 for vs2003、SQL Server(6372)
5. ASP.net实现无扩展名的URL重写。简单、方便、无需ISAPI。(6173)
6. QuickPager asp.net 分页控件、表单控件等自定义控件下载 和介绍 【2009.07.02更新】(5567)
7. 设计上的8/2原则,您实现了吗?实现后会是什么样子的呢?(5459)
8. 我的网站的后台管理的结构图。(5149)
9. 我能为公司做点什么呢?(4797)
10. 【思路】超级传送带——我的程序思路(4575)
评论排行榜
1. 【自然框架】表单控件 之 一个表单修改多个表里的记录(116)
2. 通用权限的思路。带有数据库关系图(89)
3. 三层架构之我见 —— 不同于您见过的三层架构。(89)
4. 【自然框架】之通用权限(六):权限到节点(79)
5. 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率(目前只针对SQL Server 2000)可以提高很多(68)
6. 【自然框架】之鼠标点功能现(一):单表的增删改查(即上次5月23日活动的一个主题)【Demo、源码下载】(66)
7. 您把哪些东东看成了对象?(66)
8. 【自然框架】之通用权限(七):权限到按钮 (64)
9. 【抛砖引玉】“技术顾问” —— 老程序员的一个出路。(55)
10. 其实添加数据也可以这样简单——表单的第一步抽象(针对数据访问层)《怪怪设计论: 抽象无处不在 》有感(55)
【开源】QuickPager ASP.NET2.0分页控件——使用示例、基本应用和查询功能
myPage分页控件发出来之后,虽然开源了,但是没有给一个简单一点的 demo,真是漏掉了一个很重要的部分。
先说明一下使用myPage分页控件需要的文件。
Controls.dll
:这个是分页控件的dll文件,您可能要问,为什么不叫 myPage.dll呢?因为里面不仅有分页控件,还包含其他的控件,比如扩展功能的TextBox等控件,这是多个控件的集合,所以就叫做
Controls.dll
了。对应的有一个
Controls.XML
文件,里面放的是控件里的属性、函数、事件的提示说明。这个可以更方便使用。需要把这两个文件放在bin目录里面。
提示效果:
DataAccess2.0.dll
:这个不属于分页控件,他是
数据访问函数库
的dll文件,因为分页控件要调用这里面的函数来提取数据,所以也需要把这个dll文件放在bin目录下面。他也有一个对应的
DataAccess2.0.xml
文件。
压缩包里的其他文件
vs200802.dll
这个是演示程序的 dll文件。
Default.aspx
这里就是分页控件的演示代码了。
要想写一个demo还真不是容易的事情,IDE就有两个,vs2005和vs2008,有都可以建立“网站”和“项目”,组合一下就是四种demo。我比较懒,给自己偷个懒吧,用vs2005写一个建立“网站”的demo,再用vs2008写一个“项目”的demo吧。(ps:vs2005还没有打上sp1呢,所以想建立项目也建立不了:) )
先说一下公用的部分吧,需要在web.config里面配置连接字符串和数据库类型。
<
appSettings
>
<
add
key
="DataType"
value
="1"
/>
</
appSettings
>
<
connectionStrings
>
<
add
name
="ConnStr"
connectionString
="Data Source=.;Initial Catalog=AdventureWorks ;persist security info=False;user id=sa;pwd=admin;"
providerName
="System.Data.SqlClient"
/>
</
connectionStrings
>
<
system.web
>
DataType =
1 表示使用sql Server数据库。
ConnStr 是连接字符串。这里使用 SQL Server2005自带的 AdventureWorks 数据库,不知道大家有没有安装。如果没有安装的话,需要在这里换成其他的数据库。当然 Data Source 等也需要做相应的修改。
下面说一下vs2005里面使用分页控件地方法,截了几个图,方便大家阅读。
1、添加引用。
怎么建立项目就不用说了吧。项目建立之后需要引用分页控件需要的dll文件。
在“解决方案资源管理器”点击右键,选择“添加引用”。
然后呢会打开“添加引用”对话框,选择“浏览”标签。
找到
Controls.dll
文件,单击确定。好了,分页控件就会被引用到项目里了。下一步是在工具箱里面添加分页控件。
2、
工具箱里添加分页控件。
点击“选择项”,打开“选择工具箱项”
使用“浏览”按钮,找到
Controls.dll
文件,然后里面的控件就会加载进来,就是选中的这几个。单击确定,就可以加到工具箱里面了。
然后往页面上拽一个GridView,和一个JYKPage(控件里还没有改名:) ),用做测试,GridView的ID是GV,分页控件的ID:myPage1。GridView采用“自动生成字段”的方式。
dll和控件都加载完毕,下面可以写代码了。
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(
!
Page.IsPostBack)
setPageInfo();
}
private
void
setPageInfo()
{
//
以下三个属性必须赋值
this
.myPage1.ControlGridID
=
this
.GV.ID;
this
.myPage1.TableName
=
"
Person.Contact
"
;
//
表名或者视图名
this
.myPage1.TableOrderColumns
=
"
FirstName,ContactID
"
;
//
排序字段,可以写多个字段
//
以下属性可以不赋值
this
.myPage1.TableShowColumns
=
"
*
"
;
//
显示的字段,可以不填,默认为 *
this
.myPage1.PageSize
=
5
;
//
一页显示的记录数,默认一页显示20条记录
this
.myPage1.TableQuery
=
""
;
//
查询条件,不包含 where
this
.myPage1.NaviCount
=
8
;
//
页号导航的数量,默认10个
//
这个函数必须执行,而且要在给上面的属性赋值之后执行。
this
.myPage1.BindFirstPage();
}
然后运行程序。提示一下,运行前要修改web.config文件,设置连接字符串。另外还有一点,需要在根目录下面建立一个 log文件夹,如果运行程序出现错误(和数据访问相关的),那么会在这个文件夹里面建立一个文本文件,在里面写出错信息,您可以根据这里的信息来判断出错的原因。
需要给log文件夹设置一下权限,User用户的“写入”权限,否则无法写入信息。如图:
如果没有什么意外的话,您会看到下面的效果。
GridView没有做什么处理,大家忍受一下先。:)
最少写四行代码就可以实现分页的功能,显示数据就交给GridView了。什么您问是不是漏了一件事情,翻页时产生的事件还没有说呢,这个在默认的情况下是不用自行处理的。分页控件就可以自己处理。
还要写代码,好像没有GridView + SQLDataSource方便。我想了一下,好像确实没有什么优势,要说优点嘛,好像只有两个,一个是分页控件是按需索取,一页显示五条数据的话,那么就到数据库里提取五条,多一条不取(听说GridView在分页的时候还是会把表里的数据都拿出来,然后在内存里面分页)。另一个就是,GridView + SQLDataSource只能在vs05、08里面使用,不能在vs2003里面使用,而我的分页控件可以在vs2003里面使用。当然要选用for .net1.1的版本。
(ps:04年底,分页控件就可以这么用了。)
下面说一下vs2008里面使用分页控件的方法,其实和在05里面也没有什么大的区别。
1、引用dll文件
2、工具里添加分页控件
3、编写代码。这个嘛,其实和vs05里面的是一样的,就不重复贴了。
4、运行。
还是要先修改一下web.config文件,再根目录里面建立一个log文件夹。
最后说一下如何实现查询功能。
在页面里拖拽两个JYKTextBox,对没写错买就是这个,他在分页控件的下数第二个控件,再加一个button按钮。
我们假设需要按照字段
LastName
、Phone 来进行模糊查询。在按钮的
Btn_Search_Click
事件里面写如下代码即可。
protected
void
Btn_Search_Click(
object
sender, EventArgs e)
{
//
TableName等属性已经在ViewState 里面保存了,所以查询的时候不用再次赋值。
//
组合查询条件
string
query
=
""
;
string
key
=
this
.Txt_LastName.TextTrimNone;
if
(key.Length
>
0
)
{
query
=
"
LastName like '%
"
+
key
+
"
%'
"
;
}
key
=
this
.Txt_Phone.TextTrimNone;
if
(key.Length
>
0
)
{
if
(query.Length
==
0
)
query
=
"
Phone like '%
"
+
key
+
"
%'
"
;
else
query
+=
"
and Phone like '%
"
+
key
+
"
%'
"
;
}
this
.myPage1.TableQuery
=
query;
//
添加查询条件
this
.myPage1.BindFirstPage();
//
重新显示数据,控件内部会重新生成SQL语句。
}
运行效果
demo的下载地址:
http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html
还是在随笔的下面。
Tag标签:
分页控件
,
分页
,
自定义控件
,
myPage
,
asp.net
posted on 2008-06-27 21:13
金色海洋(jyk)
阅读(3903)
评论(52)
编辑
收藏
网摘
所属分类:
自定义控件—分页控件
Feedback
1501513
#1楼
2008-06-27 22:17 |
Ants
多表联合查询怎么办?
回复
引用
查看
#2楼
[
楼主
]
2008-06-27 22:27 |
金色海洋(jyk)
多表联合 使用视图。
回复
引用
查看
#3楼
2008-06-27 22:34 |
萧寒
@Ants
可以通过创建视图;
@金色海洋(jyk)
我对这个数据展现的看法是,至少翻页控件不应该是数据的原始提供者,因为翻页不仅仅是简单数据集;虽然视图可以解决一部分,但那并不是什么情况通用;并且这个存在sql拼接的问题,我认为翻页控件应该是最简单的一个事件驱动而已;数据的页应该交给业务组件来完成;
回复
引用
查看
#4楼
2008-06-27 23:12 |
jisen
同意楼上的,翻页控件不应该考虑数据源,仅仅实现“翻页”就足以。
回复
引用
查看
#5楼
[
楼主
]
2008-06-27 23:37 |
金色海洋(jyk)
我很懒,我觉得这样挺好的。也用了三年多了,没有遇到什么问题。
有哪些情况不能满足呢?能不不能举个例子呢?
常见的分页的一种处理方式是在存储过程里面组合SQL语句,楼上的二位对这种处理方法的看法呢?能不能说一下呢?
什么样的要求,只能由业务组件来完成,分页控件(不对,应该说是视图)做不了呢?目前我还没有遇到。
回复
引用
查看
#6楼
2008-06-27 23:42 |
PerfectDesign
楼主很幸苦啊
回复
引用
查看
#7楼
[
楼主
]
2008-06-28 00:00 |
金色海洋(jyk)
心不苦,命苦,呵呵。
我真的是不理解,分页控件为什么就不能多管点“闲事”呢?
@萧寒
哪些情况可以用呢?哪些情况不可以用呢?在一个项目中,他们的比例是多少呢?几比几,谁赢了:)
对于那些可以使用的情况,为什么不能用呢?一定要写更多的代码来实现相同的功能呢?
sql拼接有哪些问题呢?效率?SQL注入?网络传输?不能缓存执行计划?还是什么?
在存储过程里面组合SQL语句的话,也同样存在着效率、SQL注入、不能缓存执行计划的问题呀,这种方法呢?可以吗?
回复
引用
查看
#8楼
2008-06-28 00:12 |
PerfectDesign
突然看到老兄这样的写法是会被注入的!
还是用sp_executesql吧,很危险的
回复
引用
查看
#9楼
2008-06-28 00:49 |
王孟军!
感觉不错啊
这个分页控件,应该花了不少时间
我觉得,要做到完全通用很难,所以能达到基本要求就可以了,最主要的是数据源一定要灵活
回复
引用
查看
#10楼
2008-06-28 00:57 |
萧寒
@金色海洋(jyk)
@@ 你的控件本身无任何问题,公说公有理,婆说婆有理,我针对你提的几个观点说点自己的想法;
哪些情况可以用呢?哪些情况不可以用呢?在一个项目中,他们的比例是多少呢?几比几,谁赢了:)
@@ 视图的列非固定的情况下不可用;控件应该是通用设计,当违背了这个原则后,就不得不考虑要满足一些特殊需求,那么这个不是几比几,是可用性,越是通用设计就越要避免实现固化需求;这只是个分页控件,它应该只是提供分页参,发起分页请求,而不参与数据逻辑;实际上分页控件有用的信息只有页大小与页索引,那sql 的配置是多余的;
对于那些可以使用的情况,为什么不能用呢?一定要写更多的代码来实现相同的功能呢?
@@ 为什么sql的配置多余的,因为你实现了这个数据源,是不是应该考虑不同的数据库的分页sql差别,如果数据来源不是数据库的话,那是不是又很鸡肋?
sql拼接有哪些问题呢?效率?SQL注入?网络传输?不能缓存执行计划?还是什么?
在存储过程里面组合SQL语句的话,也同样存在着效率、SQL注入、不能缓存执行计划的问题呀,这种方法呢?可以吗?
@@ sql拼接本身没有问题,没有 sql 拼接就不能写出灵活的数据查询,但是一个控件将sql都放到了aspx内,是不是页面代码应该直连数据库了?
@@ 当然,如果在这些方面没有要求,那么这个分页控件确实是完美的;
@@ 我认为,你的分页控件把分页的展示多做一些风格和样式,并且把配置sql的几个属性隐藏掉,那就已经很好了!
回复
引用
查看
#11楼
2008-06-28 06:34 |
枫子
牛x
回复
引用
#12楼
[
楼主
]
2008-06-28 07:24 |
金色海洋(jyk)
怪我没说清楚,一会再补上一篇。
@PerfectDesign
注入是没有的,不知道您注意没有,我是用的是
this.Txt_LastName.TextTrimNone;
这种方法,而不是 this.Txt_LastName.Text;
Txt_LastName.TextTrimNone 相当于 Txt_LastName.Text.Trim().Replace(''',''); 这样就可以避免注入攻击了。
另外如果字段是数字类型的话,还要判断是不是数字,这样才更安全。
@王孟军!
确实是很长的时间,从03年开始接触asp.net的时候就开始了,当时看到前辈使用UserControl的方式来实现分页,这个只负责绘制UI,没有其他的功能。受到这个启发,才开始写分页控件的,一点一点完善。到05年基本稳定。
@萧寒
我也针对你的观点说说我的想法。
>>视图的列非固定的情况下不可用。
这个非固定是什么意思呢?动态创建的视图吗?还是没有理解。
>>控件应该是通用设计
这个我也承认,但是还有一个要求:多干点活:) 。我更注重后者,如果二者冲突的话,我会选择后者。
我不追求放之四海而皆准,我只求放之一海而简单好用,原因很简单,我可以做四种分页控件,一个海里放一个,呵呵,这样就可以都准了。
不能太追求通用,DataGrid的分页功能是最通用的,但是使用的人并不多,因为UI上不是太灵活,数据量大了有会比较慢。
>>不同的数据库的分页sql差别
这个是在考虑中的,也有了比较好的解决方案。一会细说。如果数据源不是数据库的话,那么对不起,不支持。注意:Excel属于数据库,是支持的,因为使用OleDb可以访问。XML就不支持了,好像OleDb不能访问。
>>一个控件将sql都放到了aspx内,是不是页面代码应该直连数据库了?
这个说明,我对分页控件的介绍不够详细。控件本身是.cs文件,是一个类,没有aspx呀。连接数据库是和分页控件无关的,这个是交给数据访问函数库来实现的。数据访问函数库是一个help,专门负责访问数据库的,所以页面代码直连数据库是不存在的。
>>当然,如果在这些方面没有要求,那么这个分页控件确实是完美的;
谢谢。样式可以通过 css来实现。每一个“元素”都会加上class的属性,都会有ID,这样便于设置css。“上一页”这样的文字也是可以通过属性来修改的。
看到分页控件的属性的图片了吗?里面显示了这些属性。
回复
引用
查看
#13楼
2008-06-28 08:33 |
kiler
@PerfectDesign
晕,sp_executesql就不注入了,现在很多分页存储也不也是拼sql的。
lz太小瞧黑客了,输入的值过滤“,”也就是阻止点看着网上教程黑别人的菜鸟而已,sql注入的手法很多的不是简简单单去掉一个,就可以搞定的,尽量减少sql拼接多用参数才是最好的办法。
回复
引用
查看
#14楼
2008-06-28 08:36 |
pwqzc[未注册用户]
JYK
俺支持你啦!
也支持俺师傅!
回复
引用
#15楼
[
楼主
]
2008-06-28 08:42 |
金色海洋(jyk)
@kiler
请问还有哪些高级的注入方式呢?望请赐教,万分感谢!
不是为了注入别人的网站,只为加强自己的防御:)
回复
引用
查看
#16楼
[
楼主
]
2008-06-28 08:43 |
金色海洋(jyk)
@ pwqzc
谢谢。好久没聊了,还炒股吗?不对好像是期票,不好意思,弄混了。
回复
引用
查看
#17楼
2008-06-28 10:39 |
Sam Lin
我觉得翻页控件不应提供TableName这个的属性,不知道lz用这个属性干嘛,到控件内部中用“select * from tablename”吗?,我觉得应该是提供DataSource属性,让使用者提供个数据源。
@金色海洋(jyk)
@萧寒
多表联合查询,就建立视图?我以前的项目也是这样,但发现这样会造成
View的数量>Table数量
大部分只是仅仅为了显示出列表而来建立视图
之前我做的CommonQuery查询控件,也遇到这种问题,不过后来公司其它项目组用了NHibernate后就没有这种问题出现了
回复
引用
查看
#18楼
[
楼主
]
2008-06-28 10:49 |
金色海洋(jyk)
@Sam Lin
TableName (还有其他的属性)是用来拼接SQL语句的,就是分页算法。
为什么要提供DataSource属性呢?又不是显示数据的控件,简单的传递DataSource给显示数据的控件没有什么意思吧。
我只遇到过 view的记录数 < table的记录数,因为多表关联的时候,由于数据不完整而造成的。再有就是笛卡尔乘积会造成记录数增多,这个是正常的吧。
回复
引用
查看
#19楼
2008-06-28 11:15 |
PerfectDesign
@kiler
不太明白我采用sp_executesql后,你的其他的注入方式,能举个例子吗?
不过海洋的穷举法是不可取的,防注入不可能依赖过滤,过滤的性能要差很远。而且你不可能不让用户不准提交delete等英文吧?
回复
引用
查看
#20楼
2008-06-28 12:45 |
Waitd Ding
这个控件,怎么说呢?感觉比较适合你个人自己使用.无论是UI上的设计(非指样式),还是数据的提取(好像Help类也是你自己写的吧?)都是比较具有你自己特色的.换言之,如果我们要使用你的分页控件的话,也会间接使用到你的help等东东.说句不该说的,分页控件一大堆,比你这个好的也多,不好的也很多,很难找到用你的pager的理由.
话说得可能有点过了,不过我想说就说点真实的想法出来,希望不要见怪!
不过单从技术的层面来讲,海洋兄的精神很值得学习:)
单从实用性来讲,我想没有人有比你更加深刻的体验,不然你也不会花这么多的时间和精力来完善你的pager了.
总结一条:适合自己的才是最好的:)
回复
引用
查看
#21楼
2008-06-28 15:23 |
kiler
@金色海洋(jyk)
找了篇sql注入教程给你看看
http://www.7747.net/Article/hack/wxia/200603/8215.html
" target="_new">
http://www.7747.net/Article/hack/wxia/200603/8215.html
sql注入的手法还是很多,很多黑客高手本身就是开发人员,他们会从开发人员的角度去思考,去寻找网站漏洞,防不胜防,唯一很防止sql注入的方法就是多用参数不拼凑sql,不让别人有机会改动你的sql。
回复
引用
查看
#22楼
2008-06-28 17:13 |
菜菜灰
楼主的数据访问组件写的有些麻烦,明明在providerName="System.Data.SqlClient" 已经指定了sql数据库,为什么还要在这里指定呢<add key="DataType" value="1"/>
建议你重新改写数据库访问组件
回复
引用
查看
#23楼
2008-06-29 07:45 |
jillzhang
挺帅的
回复
引用
查看
#24楼
2008-06-29 08:09 |
AfritXia
我觉得你可以修改 BindFirstPage 函数,用代理或者是事件的方式(再或者使用策略模式)来获得数据源。你可以给出一个默认代理,就是你现在使用的 SQL 拼接方式。你用自己控件的时候,就是连带这个默认的代理方式一起用。而如果别人用你的控件,创建一个新的代理就可以了……
分页空间的“显示”、“绑定”和“分页方法”,基本上都是不会变化的,这部分将被封装起来。唯一变化的就是获取数据源的方式上有些不同,把它抽象化,并给出一个自己的具体实现就可以了——
回复
引用
查看
#25楼
[
楼主
]
2008-06-29 08:28 |
金色海洋(jyk)
@菜菜灰
因为对providerName这个的用法还不熟,这个是SqlDataSource自动生成的。带上了,我也就没有去掉。但是我又不知道怎么读取这个属性。
@jillzhang
谢谢。
@kiler
感谢提供资料,大部分内容以前都看过了。我防止注入用了两种方式;
1、数字,如果确认要拼进SQL语句的是数字的话,那么会在拼入之前检查是不是数字,不是的话,不进行下面的程序。
2、非数字,就是字符串了。这个要去掉“'”就是单引号。因为捣蛋的都是单引号,去掉了,不论你输入的是什么,都会老老实实地括在一对单引号之内的,就是说不论输入什么都会当作字符串来处理,字符串就没有危险了吧。
3、不用sa连接数据库。
这是我的思路,不知道有没有遗漏的地方。
@Waitd Ding
感谢提出宝贵意见,我还会详细说明分页控件的原理、思路,还要加进入不少功能。
回复
引用
查看
#26楼
[
楼主
]
2008-06-29 09:34 |
金色海洋(jyk)
@AfritXia
我现在好像就是这么做的。
回复
引用
查看
#27楼
2008-06-30 20:12 |
笑容
2008-6-30 20:10:00 /myPage/Default.aspx
RunSqlDataTable函数出现异常。
错误信息:在关键字 'with' 附近有语法错误。
'ROW_NUMBER' 不是可以识别的 函数名。
查询语句:set nocount on; with t_pager as (select myIndex = ROW_NUMBER() OVER (ORDER BY id ),* from news_class ) select * from t_pager where myIndex between 6 and 10 set nocount off;
回复
引用
查看
#28楼
2008-06-30 20:13 |
笑容
翻到第2页时出错:
如下:
2008-6-30 20:10:00 /myPage/Default.aspx
RunSqlDataTable函数出现异常。
错误信息:在关键字 'with' 附近有语法错误。
'ROW_NUMBER' 不是可以识别的 函数名。
查询语句:set nocount on; with t_pager as (select myIndex = ROW_NUMBER() OVER (ORDER BY id ),* from news_class ) select * from t_pager where myIndex between 6 and 10 set nocount off;
回复
引用
查看
#29楼
[
楼主
]
2008-07-01 13:02 |
金色海洋(jyk)
不好意思,实在是对不起,忘记说明了,目前这个分业算法支持持SQL 2005。
我原以为使用了 VS2005的,都会把数据库也升级到 SQL 2005呢,随意就没有加上SQL 2000 的分页算法。
实在是对不住大家,今天晚上加上for SQL 2000的分页算法。请内心等待。
回复
引用
查看
#30楼
2008-07-01 15:35 |
笑容
实在是对不住大家,今天晚上加上for SQL 2000的分页算法。请内心等待。
----------------------------
好的!
等新的算法出来,接着测试。
回复
引用
查看
#31楼
[
楼主
]
2008-07-01 22:05 |
金色海洋(jyk)
程序改完了,明天早上再发吧。
回复
引用
查看
#32楼
2008-07-02 09:48 |
Han@三分之一
如果返回的列表数据中需要进行一些逻辑操作处理后再呈现给用户,那是不是得改下分页控件?如果有几个需要分页的地方逻辑处理都不一样,可能还挺麻烦的。
回复
引用
查看
#33楼
[
楼主
]
2008-07-02 10:19 |
金色海洋(jyk)
逻辑操作处理 可以交给 GridView这样的控件来处理吧。另外分页控件采用DataTable来装载数据,也可以对DataTable来进行处理。
回复
引用
查看
#34楼
2008-07-02 10:37 |
笑容
用了SQL2000补丁后,第一页都不出来了,而且报错如下:
行 33:
行 34: //这个函数必须执行,而且要在给上面的属性赋值之后执行。
行 35: this.myPage1.BindFirstPage();
行 36:
行 37: }
回复
引用
查看
#35楼
2008-07-02 10:38 |
笑容
我用原来的BIN敷盖,第一页又好了,还是打不开第2页
问题依旧。
回复
引用
查看
#36楼
2008-07-02 10:58 |
笑容
1:属性:SQLKind采用TableVar
2:TableIDColumns属性 修改为ID后,正常
可是在[ ]GO 里输入页数时没有反应,而且页底显示“有网页错误”
回复
引用
查看
#37楼
[
楼主
]
2008-07-02 12:37 |
金色海洋(jyk)
感谢测试。昨天晚上写的程序,头有点晕,还是漏掉了一点。SQLKind的默认值没有设置上。
现在分页好用了吧?(GO的除外)
不好意思,哪个 GO的功能,暂时没有加入。
回复
引用
查看
#38楼
2008-07-03 18:55 |
笑容
现在分页很好用!
可是那个GO的功能,若是不加上,美中不足。
盼出完整版。谢谢先!
回复
引用
查看
#39楼
[
楼主
]
2008-07-03 21:13 |
金色海洋(jyk)
不要着急,事件的问题已经解决了。明天就可以发布v2.0.0.3了。
回复
引用
查看
#40楼
2008-07-05 12:14 |
笑容
发布v2.0.0.3的时间,到底是几号啊?
回复
引用
查看
#41楼
[
楼主
]
2008-07-05 19:04 |
金色海洋(jyk)
不要急,就是今天。修改了一天,才改完。
笔记本太热了,罢工了。
所以嘛,休息一会。:)
回复
引用
查看
#42楼
[
楼主
]
2008-07-05 19:51 |
金色海洋(jyk)
http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html
" target="_new">
http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html
V2.0.0.3已经传上去了,改了一个名称,叫做 QuickPager了。
一会写个说明。
回复
引用
查看
#43楼
2008-07-07 00:01 |
笑容
OK,测试通过,目前没发现问题!
回复
引用
查看
#44楼
[
楼主
]
2008-07-07 07:11 |
金色海洋(jyk)
好用的话就帮忙宣传一下呀。
回复
引用
查看
#45楼
2008-07-07 18:54 |
笑容
OK,收到!
回复
引用
查看
#46楼
2008-07-30 16:53 |
Jim~
看着看着 饿过头了。。
回复
引用
查看
#47楼
2008-10-20 14:04 |
kingcai[未注册用户]
分页的 .dll在那里下呀。好想帮你测试一下
回复
引用
#48楼
2008-10-20 14:04 |
kingcai[未注册用户]
好想。。用用.........
回复
引用
#49楼
[
楼主
]
2008-10-20 18:40 |
金色海洋(jyk)
http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html
" target="_new">
http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html
在这里下载。
回复
引用
查看
#50楼
2008-12-18 16:19 |
pipzeng[未注册用户]
最好能支持和自定义的表单控件(Grid)捆绑在一起,这样数据显示Grid和分页就成为一个控件了,给这个控件设置数据源或sql以及表格标题等一些属性,然后自动显示数据和分页。
回复
引用
#51楼
2009-04-03 15:17 |
沧海一声笑
下载源码研究了一下,楼主辛苦!
感觉拼接sql,获取数据部分基本可以作为一项附带功能,灵活一点开发者可以选择用或者不用!
回复
引用
查看
#52楼
[
楼主
]
2009-04-13 09:58 |
金色海洋(jyk)
我下一个目标就是要把他们分开来分成两个部分,加上数据访问函数库,就是三个部分了,然后可以随意选择其他人写的,都可以替换了,只是要实现一个接口。
回复
引用
查看
刷新评论列表
刷新页面
返回页首
发表评论
昵称:
[登录]
[注册]
主页:
邮箱:
(仅博主可见)
验证码:
看不清,换一个
评论内容:
登录
注册
[使用Ctrl+Enter键快速提交评论]
0
1231337
链接:
切换模板
导航:
网站首页
社区
新闻
博问
闪存
网摘
招聘
找找看
Google搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务
相关文章:
最新IT新闻:
Twitter无处不在 魔兽世界Twitter发送器插件发布
Firefox 3.5匆忙推出漏洞多 Mozilla本月将更新
预测:Twitter最可能收购的十家公司
网易澄清:与暴雪合资公司仅提供技术支持
杰克逊悼念仪式或成史上最大规模Web活动
相关链接: