初学Datagrid

简介:
这两天一直在解决一个问题就是如何使用Datagrid里的“编辑、更新、取消、删除以及添加”按钮来实现对数据的就地编辑?
      看书手头仅有的两本书,它的上面是用Imagebuttom来引到一个新的页面来进行编辑操作,这种方法当然是可以的,它的代码就是下面的样子:

None.gif < asp : templatecolumn >
None.gif   
< headerstyle witdth = " 40px " ></ headerstyle >
None.gif   
< itemTemplate >
None.gif      
< asp : imagebuttom id = " edit "  runat = " server "  imageurl = " images/edit.gif "  commandname = " edit "  alternatetext = " 修改 "   ></ asp : imagebuttom >
None.gif
</ itemtemplate >
None.gif
</ asp : tempaltecolumn >
None.gif

很明显这并没有用到Datagrid自身提供的功能按钮,虽然也实现了功能,但是显的有点绕道而行了,我现在要做的是在一个页面里面实现数据的就地编辑(包括增加,修改,更新,删除),在一个表里实现上面的操作。由于手头没有这方面的材料,以前也没有做过,于是我只能到摆渡搜索,但是效果很差没找到自己所要的,于是我想到了MSDN,我在于是我MSDN上的ASP.NET开发中心的主页上打入“如何实现Datagrid的就地编辑”,结果很让人失望,没有找到任何记录,于是我就想把要搜索的再分的更细点,与是我就搜索“ EditCommand ”,结果就是我找到了我昨天发的文章“ 演练:使用 DataGrid Web 控件读取和写入数据”,这就是我要找的知识点,我当时很兴奋,一字一句的看,发现它讲的我基本都懂,但我不一定能做成功,于是按着它的思路我开始做,途中我遇到了很多的麻烦,直到此刻我才真正做成功,下面我就将这个过程简要的介绍一下,顺便让自己回忆一下。
         由于Datagrid是单向显示数据的,也就是说,数据绑定从数据源读取数据但不对其进行更新,我们必须写事件来进行更新的相关操作,那么首先可以把你的Dataset或是直接的存储过程里将数据绑定到了网格。
     那么我开始做的时候,就犯了个错误,我把dataset 在pageload时候就fill了,并且进行databind,而在后面的操作只用databind绑定一下,并没有使页面重新载入,那么原来在Pageload的读取数据的操作就没法进行,那么我的数据即使操作成功了,在页面上也不会有更新。后来通过仔细研读MDSN上的《演练:使用 DataGrid Web 控件读取和写入数据》,改变了自己的原来的思路,先建立Dataset,然后在到Page_load中去Fill,并进行初始化操作(Databind数据到Datagrid),然后在为了能在编辑操作以后能够在页面上体现出来,我按着MSDN上文章里说的去做,结果没有成功,然后我就专门写了个过程Refreshes

None.gif      Sub  Refreshes()
None.gif        objconn 
=  New OleDbConnection(dsn)
None.gif        objds 
=  New DataSet
None.gif        objadapter 
=  New OleDbDataAdapter(sql ,  objconn)
None.gif        objadapter
. Fill(objds ,  tablename)
None.gif        s_lists
. DataSource  =  objds . Tables(tablename) . DefaultView
None.gif        s_lists
. DataBind()
None.gif        objconn
. Close ()
None.gif    End 
Sub

并在更新、删除操作后调用它,结果就可以了。所以看MSDN的这篇文章上的先建立数据集,再绑定,更新后再绑定,应该是合理的做法,但我就没有实现,而是再写了一个过程来帮助实现及时更新的。
     其次还有就是更新操作按着文章上来做底三就出错了,并且我一直也没解决,第三步是这样的:
None.gif ' 在数据表中查找对应的行并更新该行
None.gif
'  Visual Basic
None.gifDim r As dsCategories
. CategoriesRow
None.gif
=  DsCategories1 . Categories . FindByCategoryID(key)
None.gifr
. CategoryName  =  categoryName
None.gifr
. Description  =  categoryDescription
None.gifSqlDataAdapter1
. Update(DsCategories1)
None.gifDataGrid1
. DataBind()
第一句就提示出错,没办法我就自己写更新语句,并执行它,结果能实现更新功能,也就不管它了,我的语句是用Command对象来实现的,比较原始,与文上的做法有出入,不我我一直在研究上面的这个更新方法到底是为什么我就没法执行,等研究出来我再写上来。
     还有就是为了减少页面我想在这个页面同时实现增加记录的功能,我按着文中的思路,先向数据库Insert一个空记录,然后刷新页面,显示新增的空记录,然后我们就可以进行修改。这个我基本上算是做好了,不过QQ技术群里的朋友说这样不好,还是搞个Imagebuttom去另一个页面进行添加比较好,我不以为然。
     最后,想向各位讨教个问题。QQ 技术群里有同志说绑定可以用更简单的方法实现,我还没有找到,各位如果知道就指点一下,先谢过!对,还有上面的更新事件里出错的代码,是为什么?


     本文转自danni505 51CTO博客,原文链接:http://blog.51cto.com/danni505/22697,如需转载请自行联系原作者


相关文章
|
5月前
|
数据可视化
C#-DataGrid的使用(二)
DataGrid的使用
17 0
|
5月前
C#-DataGrid的使用(一)
DataGrid的使用
27 0
|
8月前
C#-DataGrid的使用(三)
C#-DataGrid的使用
30 0
|
8月前
Datagrid添加右键菜单
Datagrid添加右键菜单
37 0
|
JSON 数据格式
EasyUI–表格datagrid详解
具体解释都写在文字描述里面了,先看示意图:
299 0
EasyUI–表格datagrid详解
ListView、TreeView和DataGrid。
原文:ListView、TreeView和DataGrid。 1、ListView。 ListView继承自简单的没有特色的ListBox,并使用View属性进行扩展。增加了对基于列显示的支持,并增加了快速切换视图或显示模式的能力,而不需要重新绑定数据以及重新构建列表。
1173 0
|
XML 存储 数据格式
|
索引 数据格式 JSON
Datagrid组件的基本讲解
1.datagrid的基本属性 datagrid—- 一种接收后台数据用于,以标准表单的形式展示的组件。
1568 0