仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 495|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET编程:ASP.NET:DataGrid控件的编纂功效

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:31:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
也许C#刚上市的时候有些抄袭Java吧,但自从C#2.0上市之后,整个局面就扭转乾坤了,不但Java在模仿C#,而且他从来都没能跟得上C#的脚步。asp.net|datagrid|datagrid控件  在ASP手艺作Web编程的时分,由于对数据库的操纵利用的RecordSet工具,假如不利用第三方控件,想要做到在线编纂数据就很坚苦。而DataGrid控件就撑持了在线编纂的功效,只需把EditCommandColumn属性设置得当,略加编程就能够完成了。DataGrid控件的EditItemIndex属性暗示编纂按钮的种别,ASP.NET默许的EditItemIndex=-1,即不撑持编纂属性。上面我们经由过程实例来进修一下。在DataConWeb项目里增加一个Web窗体,定名为DataGrid_Sample5.aspx,并增加一个DataGrid控件。DataGrid控件属性设置以下:
<asp:DataGridid="DataGrid1"
runat="server"AutoGenerateColumns="False"
Height="282px"AllowPaging="True">
<AlternatingItemStyleFont-Size="X-Small"BackColor="Gainsboro"></AlternatingItemStyle>
<ItemStyleFont-Size="X-Small"BackColor="WhiteSmoke"></ItemStyle>
<HeaderStyleBackColor="#99CCCC"></HeaderStyle>
<Columns>
<asp:BoundColumnDataField="id"ReadOnly="True"HeaderText="编号"></asp:BoundColumn>
<asp:BoundColumnDataField="name"HeaderText="姓名"></asp:BoundColumn>
<asp:BoundColumnDataField="sex"ReadOnly="True"HeaderText="性别"></asp:BoundColumn>
<asp:BoundColumnDataField="class"ReadOnly="True"HeaderText="班级"></asp:BoundColumn>
<asp:BoundColumnDataField="address"ReadOnly="True"HeaderText="住址"></asp:BoundColumn>
<asp:EditCommandColumnButtonType="PushButton"UpdateText="更新"HeaderText="编纂"CancelText="作废"EditText="编纂"></asp:EditCommandColumn>
<asp:ButtonColumnText="删除"CommandName="Delete"HeaderText="删除"></asp:ButtonColumn>
</Columns>
<PagerStylePosition="TopAndBottom"Mode="NumericPages"></PagerStyle>
</asp:DataGrid>
在这个实例中,我们利用了自界说的DataGrid控件的模板设置,在设置列时利用<Columns><asp:BoundColumn>标志,个中<asp:BoundColumn>的DataField属性暗示绑定的数据表中的字段称号,而HeaderText暗示显现的字段称号,如许能够作出友爱的数据表头。当利用自界说模板时分,记得必定要把AutoGenerateColumns的值设为"False",不然,在显现的数据表中将反复显现双方,一个是自界说的模板情势的,一个是体系依据数据表显现的。体系默许的是绑定的列能够举行编纂的,可是实践使用中,我们常常不必要每列的字段都能够编纂,只需我们在每一个<asp:BoundColumn>里增加ReadOnly="True"就能够屏障失落该列的可编纂属性。在这个实例中,为了便于显现,我们只需求"name"字段能够编纂,其他都是ReadOnly="True"。<asp:EditCommandColumn>的ButtonType有两种,分离是PushButton(按钮款式)和LinkButton(超毗连款式),体系默许的是LinkButton,我们在这个实例中利用BushButton款式。<asp:ButtonColumnText="删除"CommandName="Delete">的款式也是下面两种,我们选择的是LinkButton款式。
我们再来看DataGrid_Sample5.aspx.vb中的逻辑编码部分:
----codebegin-----
----省略定名空间的援用
PublicClassDataGrid_Sample5
InheritsSystem.Web.UI.Page
#Region"Web窗体计划器天生的代码"
此处省略窗体计划器天生的代码
#EndRegion
PrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
IfNotIsPostBackThen
getdata()
挪用数据绑定历程
EndIf
EndSub
上面是数据绑定历程
Subgetdata()
DimmyconAsOleDb.OleDbConnection
Try
mycon=NewOleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;datasource="+Server.MapPath(".")+"StudentInfor.mdb")
DimmycmdAsOleDb.OleDbDataAdapter=NewOleDb.OleDbDataAdapter("selectid,name,sex,class,addressfromstudent",mycon)
DimdtAsData.DataSet=NewData.DataSet
mycmd.Fill(dt)
DataGrid1.DataSource=dt.Tables(0).DefaultView
DataGrid1.DataBind()
CatchexAsException
Response.Write("程序呈现毛病,信息形貌以下:<br>"&ex.Message.ToString)
Finally
mycon.Close()
EndTry
EndSub
翻页事务历程
PrivateSubDataGrid1_PageIndexChanged(ByValsourceAsObject,ByValeAsSystem.Web.UI.WebControls.DataGridPageChangedEventArgs)HandlesDataGrid1.PageIndexChanged
DataGrid1.CurrentPageIndex=e.NewPageIndex
getdata()
EndSub
哀求分列按次事务历程
PrivateSubDataGrid1_SortCommand(ByValsourceAsObject,ByValeAsSystem.Web.UI.WebControls.DataGridSortCommandEventArgs)HandlesDataGrid1.SortCommand
viewstate("sort")=e.SortExpression.ToString
getdata()
EndSub
切换到更新形态
PrivateSubDataGrid1_EditCommand(ByValsourceAsObject,ByValeAsSystem.Web.UI.WebControls.DataGridCommandEventArgs)HandlesDataGrid1.EditCommand
DataGrid1.EditItemIndex=e.Item.ItemIndex
getdata()
革新数据
EndSub
作废编纂形态
PrivateSubDataGrid1_CancelCommand(ByValsourceAsObject,ByValeAsSystem.Web.UI.WebControls.DataGridCommandEventArgs)HandlesDataGrid1.CancelCommand
DataGrid1.EditItemIndex=-1
切换到一般形态
getdata()
革新数据
EndSub
DataGrid1_UpdateCommand事务历程是.NET框架运转时托管的,当按下更新按钮时,就实行更新数据历程
PrivateSubDataGrid1_UpdateCommand(ByValsourceAsObject,ByValeAsSystem.Web.UI.WebControls.DataGridCommandEventArgs)HandlesDataGrid1.UpdateCommand
DimidAsString=e.Item.Cells(0).Text.ToString
这里是猎取以后变动的纪录ID值,
e.Item.Cells(0).Text前往的是DataGrid表格中第一列的值()
DimnameAsString=CType(e.Item.Cells(1).Controls(0),TextBox).Text
这里是猎取以后变动的后的值,CType(e.Item.Cells(1).Controls(0),
TextBox).Text是先将e.Item.Cells(1).Controls(0)转转成TextBox控件范例,
然后猎取它的Text值()
DimsqlAsString
sql="updatestudentsetname="+name+"whereid="+id
Response.Write(sql)
ExitSub
DimconstrAsString="provider=microsoft.jet.oledb.4.0;datasource="+Server.MapPath(".")+"StudentInfor.mdb"
DimmyconAsOleDb.OleDbConnection=NewOleDb.OleDbConnection(constr)
mycon.Open()
DimmycmdAsOleDb.OleDbCommand=NewOleDb.OleDbCommand(sql,mycon)
mycmd.ExecuteNonQuery()
mycon.Close()
Response.Write("<script>alert(祝贺您!您已乐成更新了了"&name&"的纪录!);</script>")
DataGrid1.EditItemIndex=-1
改动编纂按钮形态
getdata()
革新数据
EndSub
删除纪录事务历程
PrivateSubDataGrid1_DeleteCommand(ByValsourceAsObject,ByValeAsSystem.Web.UI.WebControls.DataGridCommandEventArgs)HandlesDataGrid1.DeleteCommand
DimmyconAsOleDb.OleDbConnection=NewOleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;datasource="+Server.MapPath(".")+"StudentInfor.mdb")
DimmysqlAsString
mysql="deletefromstudentwhereid="&e.Item.Cells(0).Text
mycon.Open()
DimmycmdAsOleDb.OleDbCommand=NewOleDb.OleDbCommand(mysql,mycon)
mycmd.ExecuteNonQuery()
Response.Write("<script>alert(祝贺您!您已乐成删除"&e.Item.Cells(1).Text&"的纪录!);</script>")
mycon.Close()
getdata()
EndSub
EndClass
---cdoeend----------
在下面的几个Sub过程当中,DataGrid1_UpdateCommand历程是个难点,个中,我们为了猎取编纂纪录的ID编号,利用e.Item.Cells(0).Text.ToString来猎取,e暗示传进的工具,Item暗示数据行,Cell暗示单位格,Text暗示值。为了猎取编纂后的新值,我们利用CType(e.Item.Cells(1).Controls(0),TextBox).Text语句,个中e.Item.Cells(1).Controls(0)暗示单位格的控件,利用CType转化为TextBox,然后我们就能够猎取其Text值,这就是更新的值。在猎取了纪录的ID编号和更新后的值,我们就能够编写SQL的UPDATE语句举行更新数据。
<P>将DataGrid_Sample5.aspx保留编译后,运转效果如.10所示。


.10DataGrid_Sample5.aspx运转了局

有理由相信是能提供更出色的性能。很多平台无法支持复杂的编译器,因此需要二次编译来减少本地编译器的复杂度。当然可能做不到java编译器那么简易。
不帅 该用户已被删除
沙发
发表于 2015-1-19 05:20:53 | 只看该作者
asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源
板凳
发表于 2015-1-24 06:54:18 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
老尸 该用户已被删除
地板
发表于 2015-1-31 21:56:52 | 只看该作者
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
金色的骷髅 该用户已被删除
5#
发表于 2015-2-7 00:14:00 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
乐观 该用户已被删除
6#
发表于 2015-2-19 04:19:35 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
小魔女 该用户已被删除
7#
发表于 2015-3-6 12:51:42 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
小女巫 该用户已被删除
8#
发表于 2015-3-13 01:08:24 | 只看该作者
主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
只想知道 该用户已被删除
9#
发表于 2015-3-20 08:37:24 | 只看该作者
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 23:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表