控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

考察DataGrid控件 (上)

作者:未知 出处:不详 2010年02月02日 阅读:

名词解释
inline:一种处理数据的方法,即这些数据事先不必经过编辑或分类排序,按照它们到达 的顺序,按次序排队处理.
导言:
本文,我们考察 DataGrid 的一项有用的特点—inline 编辑(inline editing)

在很多情况下,我们需要在 DataGrid 里编辑数据。比如,在一个data-driven 网站,你可能有一组administrative Web pages 页面,这些页面包含了各种不同类型的数据库表(database tables),并允许管理员修改这些表格里的数据。通过 DataGrid,我们可以很轻松的将数据库表的信息显示出来(更多信息请参考  Part 2 和 Part 5),同样,我们也可以用 DataGrid 来编辑数据!
使用 DataGrid 的编辑功能(editing features)是很简单的,相比较而言,为了达到相同的目的,DataGrid 所需要的代码比经典 ASP 页面要少地多.此外,在阅读本文之前,你应该对 SQL 有所了解,也即相关的构建和更新命令(可以参考官方的 SQL 在线书籍:http://www.microsoft.com/sql/techinfo/productdoc/2000/books.asp)同样的,你也应该对DataGrid 控件本身比较了解,理解其事件(events)处理机制,为次可参考本系列的Part 3部分。


首先:显示数据

在我们将注意力集中到编辑 DataGrid 里的数据之前,我们首先要将数据用 DataGrid 显示出来。在前面的文章我们已经深入的探讨过这个问题,在此我不打算花过多笔墨。在本例中我们使用的是 GrocerToGo 数据库(它是一种 Access 2000的数据库,可以在本文结束处下载).在此,我们将要显示 Products 里的数据。

我们将在 DataGrid 里显示 Products 表里的如下几个列:ProductID, UnitPrice, ProductName, 以及 ProductDescription,为了使 DataGrid 看起来比较美观,还包含了一些界面格式代码,下面的代码将 Products 表的数据显示在 DataGrid:

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server">
 Sub Page_Load(sender as Object, e as EventArgs)
 If Not Page.IsPostBack
 BindData()
  End If
 End Sub
 Sub BindData()
 '1. Create a connection
 Const strConnStr as String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                  "Data Source=C:\GrocerToGo.mdb"
   Dim objConn as New OleDbConnection(strConnStr)
  objConn.Open()
  '2. Create a command object for the query
  Const strSQL as String = "SELECT * FROM Products"
 Dim objCmd as New OleDbCommand(strSQL, objConn)
 '3. Create/Populate the DataReader
 Dim objDR as OleDbDataReader
  objDR = objCmd.ExecuteReader()   
  dgProducts.DataSource = objDR
  dgProducts.DataBind()  
  End Sub
</script>

<asp:DataGrid id="dgProducts" runat="server"
 AutoGenerateColumns="False" CellPadding="4"
 HeaderStyle-BackColor="Black"
 HeaderStyle-ForeColor="White"
 HeaderStyle-HorizontalAlign="Center"
  HeaderStyle-Font-Bold="True">
  <Columns>
  <asp:BoundColumn HeaderText="Product ID" DataField="ProductID" />
  <asp:BoundColumn HeaderText="Price" DataField="UnitPrice"
  ItemStyle-HorizontalAlign="Right"
  DataFormatString="{0:$#,###.##}" />
 <asp:BoundColumn HeaderText="Name" DataField="ProductName" />
  <asp:BoundColumn HeaderText="Description"
  DataField="ProductDescription" />
 </Columns>
</asp:DataGrid>

上述代码浅显易懂,BindData()函数读取 Products 表的数据到一个 DataReader,然后绑定到一个名为 dgProducts 的 DataGrid。
留意 Page_Load 件处理器
我们注意到在 Page_Load 事件处理器里,只有当初次登录页面时,才调用 BindData()子程序.也就是说,当页面产生回传时并不会调用 BindData()子程序,这是非常关键的!如何你进行修改,每次登录页面时都调用 BindData(),你编辑的数值就不会保存在数据库里。欲知详情请参考常见问题答疑:Why Your DataGrid's Updates Don't Show Up。(相关链接为http://datawebcontrols.com/faqs/Editing/EditedValuesNotSaved.shtml)

现在我们将数据显示在 DataGrid 里,接下来我们要对数据进行编辑。在 DataGrid 里有一个名为EditCommandColumn 的控件,其在 DataGrid 的每一行显示一个"Edit" 按钮。EditCommandColumn 控件是如何允许最终用户编辑某一特定行的呢?我们将在下半部分阐述。

                                                           
                                                            【注:本文由控件中国网转载】

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统