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

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

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

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

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

相关文章:

  • 2022-02-03
  • 2021-09-26
  • 2022-12-23
  • 2021-10-22
  • 2021-09-15
  • 2021-12-09
  • 2022-01-18
猜你喜欢
  • 2021-08-10
  • 2021-12-20
  • 2022-12-23
  • 2022-12-23
  • 2021-09-09
  • 2021-07-17
相关资源
相似解决方案