初学Datagrid

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

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

很明显这并没有用到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

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

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


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


相关文章
|
6月前
|
前端开发
easyui datagrid 的 tip实现
easyui datagrid 的 tip实现
162 0
|
前端开发
datagrid combobox 选择后显示valueField 而不是 textValue解决方法
datagrid combobox 选择后显示valueField 而不是 textValue解决方法
|
数据可视化
C#-DataGrid的使用(二)
DataGrid的使用
52 0
C#-DataGrid的使用(三)
C#-DataGrid的使用
56 0
|
JSON 数据格式
EasyUI–表格datagrid详解
具体解释都写在文字描述里面了,先看示意图:
342 0
EasyUI–表格datagrid详解
|
XML 存储 数据格式
|
索引 数据格式 JSON
Datagrid组件的基本讲解
1.datagrid的基本属性 datagrid—- 一种接收后台数据用于,以标准表单的形式展示的组件。
1640 0