即刻完成你的ASP.NET程序
2024-07-10 12:55:53
供稿:网友
asp.net的出现,使网络程序员们设计程序的时候完全找到了“设计程序”的感觉,当然,更多的,他们感觉到了asp.net的得心应手。但是,没有想偷懒就没有进步,如果你仅仅依靠asp.net自己的强大功能而不想其他手段,那你很快就会发现别人设计程序比你会快很多而且轻轻松松。现在,我们来学习几招偷懒的手段,让别人跟在你后面敬佩吧。
使用过asp的朋友一定都记得,asp的很多功能需要一些第三方的组件实现,比如文件上传功能的实现就往往使用aspcnup组件实现。使用这些组件,不但可以扩展asp程序的功能,而且,大大提高程序开发速度。我们这里介绍的偷懒手段,也就是介绍几款与我们平时设计密切相关的组件。
一、超级数据表格:superdatagrid
asp.net自带的datgrid功能强大,定制也很方便,但是,因为它不是专门为数据库应用设计的。所以,在连接数据库的时候,我们不得不首先连接数据库,然后绑定数据。而superdatagrid是专门为数据库设计的,所以,那些繁琐的连接数据库我们也就没有必要去写了。需要
superdatagrid将datagrid的一些属性简单化,使用这个控件,我们可以方便的实现数据库数据的显示、排序、修改数据,这些功能的实现,只要简单几行代码就可以。我们现在来看它的使用。
一)显示数据表
以下代码演示怎样使用superdatagrid来简单的显示数据表中的所有数据:
<%@ register tagprefix="super" namespace="superexpert.data"
assembly="superexpert.superdatagrid" %>
<super:superdatagrid
connectionstring="server=localhost;uid=demo;pwd=secret;database=pubs"
tablename="titles"
runat="server" />
具体效果请看:
http://www.superexpertcontrols.com/superdatagrid/samples/sample1.aspx
现在,我们来简单分析以上代码。第一行使调用superdatagrid控件,我们在以后的举例中都将使用到。第二行,和标准的datagrid使用差不多,我们看看superdatagrid的一些属性:
connectionstring:因为是连接数据库,当然少不了数据库连接语句。这个参数就是连接数据的语句;
tablename:要显示具体的表,我们就在这里定义。
看到这里,我们已经感觉到了“简单”,但是,在实际的应用中,像这种直接显示一个表的情况是很少的。所以,我们需要其他更多的功能。最直接的,我们需要select语句的返回结果。
<%@ register tagprefix="super" namespace="superexpert.data"
assembly="superexpert.superdatagrid" %>
<super:superdatagrid
connectionstring="server=localhost;uid=sa;pwd=secret;database=northwind"
commandtext="select productname, categoryname
from products, categories where products.categoryid=categories.categoryid"
runat="server" />
具体效果请看:
http://www.superexpertcontrols.com/superdatagrid/samples/sample2.aspx
以上代码返回select语句的结果。在这里,我们见到一个新的属性:
commandtext:和command一样,就是select语句;
二)数据排序
在datagrid中,数据排序虽然简单,但是代码还是不少。我们现在来看superdatagrid中怎样给数据排序:
<%@ register tagprefix="super" namespace="superexpert.data"
assembly="superexpert.superdatagrid" %>
<form runat="server">
<super:superdatagrid
connectionstring="server=localhost;uid=sa;pwd=secret;database=pubs"
tablename="titles"
enablesorting="true"
runat="server" />
</form>
具体效果请看:
http://www.superexpertcontrols.com/superdatagrid/samples/sample3.aspx
仔细看以上代码,其实就是设置了一个enablesortinga属性为真。也就是打开排序功能。需要仔细注意的一点,要将superdatagrid包括在form中。
三)数据分页
在asp中,很多朋友会为分页烦恼,现在,我们看看superdatagrid中怎样分页:
<%@ register tagprefix="super" namespace="superexpert.data"
assembly="superexpert.superdatagrid" %>
<form runat="server">
<super:superdatagrid
connectionstring="server=localhost;uid=sa;pwd=secret;database=pubs"
tablename="titles"
enablepaging="true"
pagesize="3"
pagerstyle-mode="numericpages"
runat="server" />
</form>
具体效果请看:
http://www.superexpertcontrols.com/superdatagrid/samples/sample4.aspx
我们来看看superdatagrid的几个新属性:
enablepaging:首先,我们当然要打开数据分页;
pagesize:和datagrid一样,每页数据显示的条数;
pagerstyle-mode:和datagrid一样,页码显示方式;
四)数据编辑
我们知道,在datagrid中,我们可以在直接编辑数据,但是,一般我们很少使用这样功能,因为这样编辑数据不是很方便也不是很实用,代码编写也比较多。现在,superdatagrid也提供这个功能,当然,我们不需要写那么多代码,只需要简单的设置就可以,其他,superdatagrid全部帮我们弄好了。
<%@ register tagprefix="super" namespace="superexpert.data"
assembly="superexpert.superdatagrid" %>
<form runat="server">
<super:superdatagrid
connectionstring="server=localhost;uid=sa;pwd=secret;database=northwind"
tablename="products"
enableediting="true"
enablepaging="true"
runat="server" />
</form>
具体效果请看:
http://www.superexpertcontrols.com/superdatagrid/samples/sample5.aspx
看以上代码,如果需要编辑数据,只要加enableediting属性就可以了。是不是特别简单?当然,我们仍然要将superdatagrid放在form中。
五)缓存
asp.net的缓存功能我们已经知道很强大,但是,具体到superdatagrid,你会发现它更加方便。使用superdatagrid的时候,会自动缓存已经显示过的数据来提高程序效率。设置缓存功能可以使用cachescope属性,我们可以设置缓存类型为application,,session和 none。
superdatagrid默认缓存类型为application,也就是所有用户共用缓存;如果采用session,缓存只针对特殊的用户;如果设置为none,那就是不要缓存功能。
默认的,缓存会保持30分钟,当然,我们可以使用cacheduration属性设置缓存时间,单位为分钟。
二、超级表单:superexpert dataform
刚才我们看到superdatagrid已经具有数据修改功能,但是,由于数据浏览和修改同时进行,实际上我们很少使用那种方式,更多的,我们还说采用单个记录修改。
以往我们在使用表单修改或者增加数据库数据的时候,需要作的工作很多,比如设置数据格式等,如果数据比较多,那更加繁琐。现在,使用superexpert dataform,我们可以简单的实现这些功能。
superexpert dataform可以自动保存或者修改数据库数据,还可以使用它自动从数据库生成表单(实际是浏览数据),我们甚至可以自定义样式来自动修改、更新数据库表。
一)从数据库自动生成表单
假设我们使用以下sql语句生成一个叫customersurveys的数据表:
create table customersurvey
(
customer_id int not null identity primary key,
customer varchar( 50 ) not null,
age int not null,
birthdate datetime not null,
comments text
)
这个数据表有customer_id、customer、 age、birthdate和comments五个字段。我们可以使用superexpert dataform自动生成一个表单,使用这个表单,我们可以直接向该数据表增加数据。
<%@ register tagprefix="super" namespace="superexpert.data"
assembly="superexpert.dataform" %>
<html>
<head><title>simpledataform.aspx</title></head>
<body>
<super:sqldataform
tablename="customersurvey"
connectionstring="server=localhost;uid=sa;pwd=secret;database=pubs"
mode="addrecord"
runat="server" />
</body>
</html>
具体效果如下:
http://www.superexpertcontrols.com/dataform/samples/sample1.aspx
为了更好的理解superexpert dataform,我们必须了解那些东西是可以自动生成的:
1、表单中的textbox宽度是根据数据表数据宽度自动生成的;
2、填入表单中数据的验证是自动生成的。如果数据表要求数据不为null,那么提交表单的时候就要求输入;如果数据为int,要求填入integer;如果数据为datetime,要求填入datetime数据。
3、点击提交按钮以后,数据自动保存到数据表。
所有我们要做的只是提供数据表名称和数据库连接字符串。
二)设置dataform模式
dataform有以下几种模式:
1、addrecord:增加数据模式;
2、updaterecord:修改单条数据模式;
3、updatetable:成批修改数据模式;
4、custom:提交数据时可以自己设置逻辑验证;
为了修改一条已经存在的数据,我们必须设置dataform模式为updaterecord。然后,我们必须确定修改那一条数据,我们通过datakeyfield和datakeyvalue唯一确定一条数据,datakeyfield是数据表主键;datakeyvalue是一条数据的主键的值。
以下代码修改数据表中第三条记录:
<%@ register tagprefix="super" namespace="superexpert.data"
assembly="superexpert.dataform" %>
<html>
<head><title>dataformupdaterecord.aspx</title></head>
<body>
<super:sqldataform
tablename="customersurvey"
connectionstring="server=localhost;uid=sa;pwd=secret;database=pubs"
datakeyfield="customer_id"
datakeyvalue="3"
mode="updaterecord"
runat="server" />
</body>
</html>
具体效果如下:
http://www.superexpertcontrols.com/dataform/samples/sample2.aspx
以上代码设置mode为updaterecord,设置datakeyfield为customer_id,设置datakeyvalue为3。
如果我们需要修改数据表中的所有数据,可以将dataform模式设置为updatetable。在设置为修改整个表以后,会在数据表单上方生成一个导航条,通过这个导航条,我们可以浏览数据表中的所有数据。
<%@ register tagprefix="super" namespace="superexpert.data"
assembly="superexpert.dataform" %>
<html>
<head><title>dataformupdatetable.aspx</title></head>
<body>
<super:sqldataform
tablename="customersurvey"
connectionstring="server=localhost;uid=sa;pwd=secret;database=pubs"
datakeyfield="customer_id"
mode="updatetable"
runat="server" />
</body>
</html>
具体效果如下:
http://www.superexpertcontrols.com/dataform/samples/sample3.aspx
如果我们将模式设置为custom,我们就可以设置提交表单以后的动作。比如,以下代码实现提交表单以后自动转到thankyou.aspx页面。
<%@ register tagprefix="super" namespace="superexpert.data"
assembly="superexpert.dataform" %>
<script runat="server">
sub form_submit( s as object, e as eventargs )
myform.save()
response.redirect( "thankyou.aspx" )
end sub
</script>
<html>
<head><title>dataformcustom.aspx</title></head>
<body>
<super:sqldataform
id="myform"
tablename="customersurvey"
connectionstring="server=localhost;uid=sa;pwd=secret;database=pubs"
mode="custom"
onsubmit="form_submit"
runat="server" />
</body>
</html>
具体效果如下:
http://www.superexpertcontrols.com/dataform/samples/sample4.aspx
三)设置dataform样式
dataform有四种样式我们可以修改:
1、headerstyle:定义数据表单的header样式;
2、labelstyle:定义数据表单的label样式;
3、fieldstyle:定义数据表单的field样式;
4、footerstyle:定义数据表单的footer样式;
dataform还支持以下属性设置:
gridlines:定义数据表单的线格式,包括:none、both、horizontal和vertical。
height:数据表单控件高度;
width:数据表单控件宽度;
boderstyle:数据表单边框格式;
borderwidth:数据表单边框宽度;
bordercolor:数据表单边框颜色;
cellpadding:数据表单控件大小;
cellspacing:数据表单控件间间距;
我们现在看一个举例:
<%@ register tagprefix="super" namespace="superexpert.data"
assembly="superexpert.dataform" %>
<html>
<head><title>dataformstyle.aspx</title></head>
<body>
<super:sqldataform
headerstyle-backcolor="salmon"
fieldstyle-backcolor="yellow"
labelstyle-font-name="script"
labelstyle-font-size="28pt"
footerstyle-backcolor="blue"
cellpadding="10"
cellspacing="0"
gridlines="both"
borderstyle="dashed"
bordercolor="red"
borerwidth="10px"
labelstyle-backcolor="lightgreen"
tablename="customersurvey"
connectionstring="server=localhost;uid=sa;pwd=secret;database=pubs"
runat="server" />
</body>
</html>
具体效果如下:
http://www.superexpertcontrols.com/dataform/samples/sample5.aspx
四)自定义布局的dataform
我们也可以自己增加控件设计数据表单布局,可以增加的控件如下:
● datatextbox
● datadropdownlist
● dataradiobutton
● datacheckbox
● datalistbox
● dataradiobuttonlist
● datalabel
没一个控件都扩展了标准控件的功能。这些控件都有两个属性:datafield和datatype。datafield让控件和数据库的具体字段联系起来,datatype定义输入数据的类型。以下是一个增加数据的举例:
<%@ register tagprefix="super" namespace="superexpert.data"
assembly="superexpert.dataform" %>
<script runat="server">
sub form_submit( s as object, e as eventargs )
myform.save()
response.redirect( "thankyou.aspx" )
end sub
</script>
<html>
<head><title>dataformcustomlayout.aspx</title></head>
<body>
<super:sqldataform
id="myform"
tablename="customersurvey"
connectionstring="server=localhost;uid=sa;pwd=secret;database=pubs"
runat="server">
customer name:
<br>
<super:datatextbox
datafield="customer"
runat="server" />
<p>
age:
<br>
<super:datatextbox
datafield="age"
runat="server" />
<p>
birthdate:
<br>
<super:datatextbox
datafield="birthdate"
runat="server" />
<p>
<asp:button
text="add new customer!"
onclick="form_submit"
runat="server" />
<p>
</super:sqldataform>
</body>
</html>
具体效果请看:
http://www.superexpertcontrols.com/dataform/samples/sample6.aspx
三、超级图像文字控件:superexpert imagetext
我们知道,asp.net可以将文字生成图象,只是,对我大部分用户而言,这些功能藏的有点深。superexpert imagetext让我们可以很简单的实现将文字生成图象。我们可以使用安装在服务器上的任何一款字体来生成图象,也可以使用我们下面将要提到的所有图象特效来生成图象。
我们可以利用superexpert imagetext来快速的生成图象,它的好处是我们可以完全控制文字的样式。
一)自动生成图象
要使用superexpert imagetext,我们只要简单的提供一个唯一id和需要转化的文字。下面的举例将生成“hello world”:
<%@ register tagprefix="super" namespace="superexpert"
assembly="superexpert.imagetext" %>
<super:imagetext
id="ctrlhello"
text="hello world!"
runat="server"/>
具体效果请看:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample1.aspx
为了取得更好的效果,我们可以为文字设置字体和颜色,也可以设置图象背景,下面的举例就是这样:
<%@ register tagprefix="super" namespace="superexpert"
assembly="superexpert.imagetext" %>
<super:imagetext
id="ctrlcomic"
text="hello world!"
font-name="comic sans ms"
font-size="34"
forecolor="darkblue"
runat="server"/>
<p>
<super:imagetext
id="ctrlimpact"
text="hello world!"
font-name="impact"
font-size="24"
forecolor="red"
backcolor="black"
runat="server"/>
具体效果请看:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample2.aspx
需要了解的是,无论采用什么字体,只要服务器上安装了所使用的字体就行,只要已经转化为图象,所有浏览器都可以正确的显示。
二)阴影特效
通过设置dropshadow属性,我们可以将文字转化为带有阴影效果的图象:
<%@ register tagprefix="super" namespace="superexpert"
assembly="superexpert.imagetext" %>
<super:imagetext
id="ctrldrop"
text="hello world!"
font-name="impact"
font-size="34"
dropshadow-display="true"
dropshadow-xoffset="3"
runat="server"/>
具体效果如下:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample3.aspx
针对阴影效果,我们还可以设置以下属性来增强:
● dropshadow-xoffset:水平方向偏移
● dropshadow-yoffset :垂直方向偏移
● dropshadow-alpha :设置阴影透明度
● dropshadow-color :设置阴影颜色
三)旋转文字效果
通过设置文字的rotateflip属性,我们可以将文字进行旋转:
<%@ register tagprefix="super" namespace="superexpert"
assembly="superexpert.imagetext" %>
<super:imagetext
id="ctrlhello"
text="hello world!"
font-size="24"
rotateflip="rotate90flipnone"
runat="server"/>
<p>
<super:imagetext
id="ctrlhello2"
text="hello world!"
font-size="24"
rotateflip="rotate180flipnone"
runat="server"/>
具体效果请看:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample4.aspx
四)控制图象背景
我们可以设置背景为渐进颜色、图片或者特殊图案,以下是一个渐进颜色背景的举例:
<%@ register tagprefix="super" namespace="superexpert"
assembly="superexpert.imagetext" %>
<super:imagetext
id="ctrlhello"
background-gradient="true"
cellpadding="4"
text="hello world!"
runat="server"/>
具体效果请看:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample5.aspx
我们还可以使用background-hatchstyle属性来设置特殊背景图案和图案颜色,以下举例就是一个波纹图案背景的图象:
<%@ register tagprefix="super" namespace="superexpert"
assembly="superexpert.imagetext" %>
<super:imagetext
id="ctrlhello"
cellpadding="10"
background-hatchstyle="weave"
background-startcolor="green"
text="hello world!"
runat="server"/>
具体效果请看:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample6.aspx
五)多行文字
通过设置图象的宽度,可以实现多行文字的效果:
<%@ register tagprefix="super" namespace="superexpert"
assembly="superexpert.imagetext" %>
<super:imagetext
id="ctrlhello"
text="this is a long paragraph that demonstrates how you can wrap text with the imagetext control"
cellpadding="20"
width="200"
backcolor="orange"
runat="server"/>
具体效果请看:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample7.aspx
六)定稿图象
如果不想每次页面变动都重新生成图象,可以设置final属性为true。
四、总结
以上介绍的一些控件,我们在平时的设计中用的可能都比较多,非常使用。在我我们潜心研究asp.net的同时,我们可以学习利用这些工具来提高我们的工作效率和工作效果。注册会员,创建你的web开发资料库,