⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.txt

📁 ADO.NET 数据库实例教程
💻 TXT
📖 第 1 页 / 共 2 页
字号:
  这一章我们将学习怎样显示数据,喜欢偷懒的你可以从拷贝以下代码开始: 

<%@ Page Language="VB" Debug="true" %> 

<%@ Import Namespace="System.Data" %> 
<%@ Import Namespace="System.Data.Oledb" %> 
<script language="VB" runat="server"> 
Sub Page_Load(sender as object, e as eventargs) 

Dim objConn as New OleDBConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=e:sffsitedb est.mdb") 
objConn.Open() 

Dim ds as Dataset = New DataSet() 
Dim objAdapter as New OleDbDataAdapter("SELECT * FROM users", objConn) 
Dim objCmdBld as New OleDbCommandBuilder(objAdapter) 

objAdapter.Fill(ds, "users")  

  Repeater 

  Repeater是一个根据面板循环显示数据的控件。 

  ItemTemplate:数据主要在这里显示 

  AlternativeItemTemplate:利用它可以应用交替的样式; 

  HeaderTemplate:头格式; 

  SeparatorTemplate:分隔数据列; 

  FooterTemplate:脚格式 
 
 
  
 作者:周继平    2006-2-26 12:31   回复此发言    
 
--------------------------------------------------------------------------------
 
5 ADO.NET 数据库实例教程  
 
  DataBind() 

  DataBind()将数据与页面控件绑定: 

Repeater1.DataSource = ds.Tables("users").DefaultView 
DataBind()  

  以上代码将数据绑定到Repeater,如果没有绑定,数据不会显示。 

  其他代码 

  以下是举例的其他代码: 

Rpt.DataSource = ds.Tables("users").DefaultView 
DataBind() 
End Sub 
</script> 
<html><body><font face="Arial" size="2"> 
<asp:repeater id="Rpt" runat="server"> 

<HeaderTemplate> 
<table border="0" cellspacing="1" cellpadding="3"> 
<tr> 
<td bgcolor="#6699FF" width="25%">Last Name</td> 
<td bgcolor="#6699FF" width="25%">First Name</td> 
</tr> 
</HeaderTemplate> 

<ItemTemplate> 
<tr>  
<td> 
<%# Container.DataItem("LName") %> 
</td><td> 
<%# Container.DataItem("FName") %> 
</td> 
</tr> 
</ItemTemplate> 

<FooterTemplate> 
</table> 
</FooterTemplate> 

</asp:repeater> 
</font></body></html>  

  说明: 

  一、 设置了Repeater的DataSource; 

  二、 绑定数据到Repeater; 

  三、 Repeater数据控件开始; 

  四、 HeadTemplate定义Repeater的头信息; 

  五、 ItemTemplate定义具体数据填充; 

  六、 FooterTemplate定义Repeater脚信息; 
  DataList 

  DataList和Repeater有点相似,和Repeater不同的是,DataList可以编辑数据。可以和Repeater一样使用Template,但是它具有两点不同: 

   SelectedItemTemplate:显示选择的列; 

   EditItemTemplate:显示要编辑的列; 

  以下是一个使用DataList的简单举例: 

dl.DataSource = ds.Tables("users").DefaultView 
Databind() 
End Sub 
Sub dl_ItemCommand(sender as object, e as DataListCommandEventArgs) 
dl.SelectedIndex = e.Item.ItemIndex 
dl.DataBind() 
End Sub 
</script> 

<html><body><font face="arial" size="2"><form runat="server"> 
<asp:datalist id="dl" runat="server" 
HeaderStyle-BackColor="#6699FF" 
SelectedItemStyle-BackColor="#6666FF" 
SelectedItemStyle-ForeColor="#FFFFFF" 
RepeatLayout = "table" 
RepeatDirection = "vertical" 
DataKeyField = "ID" 
OnItemCommand="dl_ItemCommand"> 

<HeaderTemplate> 
Last Name, click for full name. 
</HeaderTemplate> 

<ItemTemplate> 
<asp:linkbutton id="b1" runat="server" Text='<%# Container.DataItem("LName") %>' CommandName = "select" /> 
<br> 
</ItemTemplate> 

<SelecteditemTemplate> 
<%# Container.DataItem("LName") & ", " & Container.DataItem("FName") %> 
<br> 
</SelectedItemTemplate> 
</asp:datalist> 
</form></font> 
</body> 
</html>  

  说明: 

  一、 绑定数据以后,建立了一个过程; 

  二、 将DataList放入Form中,因为在以下的步骤中要求根据选择列刷新页面; 

  三、 接着定义了一些数据显示格式; 

  四、 HeaderTemplate:DataList头信息; 

  五、 ItemTemplate:加入链接,定义事件; 

  六、 SelectedItemTemplate:显示First 和 Last Name; 

  DataGrid 

  可能它是功能最强大的控件,不管简单还是复杂它都可以实现。 

  和ItemTemplate不同,DataGrid有不同类型的列: 

   Bound Columns:DataGird默认列显示方式; 

   Button Columns:按钮列; 

   Edit Command Column:可以编辑的列; 

   Hyperlink Column :带连接的列; 

   Templated Column :自定义列显示; 

dg.DataSource = ds.tables("users").DefaultView 
DataBind() 
End Sub 
</script> 

<asp:DataGrid id="dg" runat="server" /> 
 
 
  
 作者:周继平    2006-2-26 12:31   回复此发言    
 
--------------------------------------------------------------------------------
 
6 ADO.NET 数据库实例教程  
 以上代码很简单,就是绑定数据。 
dg.DataSource = ds.tables("users").DefaultView 
DataBind() 
End Sub 
</script> 

<asp:DataGrid id="dg" runat="server" 
BorderColor="black" 
GridLines="vertical" 
cellpadding="3" 
cellspacing="1" 
width="50%" 
Font-Names="Arial" 
Font-Size="10pt" 
HeaderStyle-BackColor="#6699FF" 
AlternatingItemStyle-BackColor="#6666FF" 
AutoGenerateColumns="False"> 
<Columns> 

<asp:BoundColumn HeaderText="ID" DataField="ID" /> 

<asp:templateColumn HeaderText="Name"> 
<ItemTemplate> 
<asp:label id="Name" runat="server" Text='<%# Container.DataItem("FName") & " " & Container.DataItem("LName") %>' /> 
</ItemTemplate> 
</asp:templatecolumn> 

</Columns> 

</asp:datagrid>  


  可能有一点复杂,我们看说明: 

  一、 绑定数据以后,设置了一些DataSet显示效果,包括字体、表宽、头信息背景颜色、交替背景颜色、是否自动生成数据表等; 

  二、 加入一个自定义格式列,该列名为Name,由字段Fname和Lname组成; 

  现在才刚刚开始 

  可能现在你还没有感受到DataSet的好处,以后的章节我们将学习怎样编辑数据。 

  五、理解DataGrid 

  数据放入DataGrid以后,除了一般的显示以外,我们还需要对这些数据进行编辑、修改。看了前几个章节你可能认为DataGrid比较简单,数据处理也比较方便。其实,如果需要真正做一个应用,我们会发现前面的知识还远远不够。以下所用的数据库和前面的章节完全相同,一些设置我们可以参考前面章节。我们先来看代码: 

<%@ Page Language="VB" Debug="true" %> 
<%@ Import Namespace="System.Data" %> 
<%@ Import Namespace="System.Data.Oledb" %> 
<script language="VB" runat="server"> 
Dim objConn as New OleDBConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=e:sffsitedb est.mdb") 
Dim ds as Dataset = New DataSet() 
Dim objAdapter as New OleDbDataAdapter("SELECT * FROM users", objConn) 

Sub Page_Load(sender as object, e as eventargs) 
objConn.Open() 
objAdapter.Fill(ds, "users") 
dg.DataSource = ds 
dg.DataMember = "users" 
If Not Page.IsPostBack Then 
dg.Databind() 
End If 
End Sub 

sub dg_edit(sender as object, e as DataGridCommandEventArgs) 
dg.edititemindex = -1 
dg.DataBind() 
end sub 

sub dg_cancel(sender as object, e as DataGridCommandEventArgs) 
dg.edititemindex = -1 
dg.databind() 
end sub 
</script>  

  以上程序代码很简单直接,我们应该都可以看懂。只是需要注意Page_Load的对数据绑定的处理,在几乎所有的数据库程序中,我们都使用这种方式处理数据绑定,所以,这个处理方式一定要牢记。以上是数据连接和事件处理部分,现在我们看DataGrid部分。 

  自定义DataGrid 

  以下代码演示了自定义DataGrid的实现,在实际应用中,我们基本都是这样使用DataGrid,以下代码很有典型性,可以作为一个好的参考。 

<form runat="server"> 
<asp:DataGrid id="dg" runat="server" 
Bordercolor="black" 
gridlines="vertical" 
font-names="Arial" 
font-size="10pt" 
HeaderStyle-BackColor="#FFCC00" '表格头信息 
ItemStyle-BackColor="#FFCC66" '每行背景色  
AlternatingItemStyle-BackColor="#FFFFFF" '交替背景色 
AutoGenerateColumns="False" '自定义每行 
OnEditCommand="dg_edit" '以下三个事件处理 
OnCancelCommand="dg_cancel" 
OnUpdateCommand="dg_update"> 

'自定义每行显示 
<Columns> 
<asp:boundcolumn readonly="true" headertext="ID" DataField="Auto" /> 
 
 
  
 作者:周继平    2006-2-26 12:31   回复此发言    
 
--------------------------------------------------------------------------------
 
7 ADO.NET 数据库实例教程  
 <asp:boundcolumn headertext="First Name" DataField="Number1" /> 
<asp:boundcolumn headertext="Last Name" Datafield="Number2" /> 
<asp:editcommandcolumn edittext="Edit" CancelText="Cancel" UpdateText="Save" HeaderText="" /> 
</Columns> 

</asp:dataGrid> 
</form>  

  以上代码中,自定义了数据编辑列,这些相应的处理在前面已经给出代码。我们现在来看事件处理。 

  OnEditCommand 

  以下是编辑按钮处理代码: 

sub dg_edit(sender as object, e as DataGridCommandEventArgs) 

dg.edititemindex = e.item.itemindex 
dg.databind() 
end sub  

  以上代码需要注意的是,e.item.itemindex就是我们需要编辑的那行数据。在对数据作任何变动以后,都需要重新绑定数据,也就是DataBing()。 

  OnCancelCommand 

  取消按钮处理和上面的编辑按钮处理差不多,区别的是,在这里,dg.edititemindex被设为-1,也就是将数据恢复到原来状态。 

  OnUpdateCommand 

  先来看数据更新代码: 

sub dg_update(sender as object, e as DataGridCommandEventArgs) 
Dim FNAME As TextBox = e.item.cells(1).controls(0) 
Dim LNAME As TextBox = e.item.cells(2).controls(0) 
Dim sqlstr As String 

sqlstr = "UPDATE users SET " & _ 
"Number1 = '" & FNAME.Text & "', " & _ 
"Number2 = '" & LNAME.Text & "' " & _ 
"WHERE Auto = " & e.item.cells(0).text 

Dim objCommand = New OLEDBCommand(sqlstr, objConn) 
objCommand.ExecuteNonQuery() 

ds.Tables.Clear 
objAdapter.Fill(ds, "users") 

dg.edititemindex = -1 
dg.DataBind() 
end sub  

  以上代码将建立两个TextBox,这两个TextBox就是DataGrid中的复本。然后用SQL语句更新数据,最后重新绑定数据。 

  总结 

  以上代码可能初学者比较难懂,而且,上面的数据更新方法也不是很好。但是为了我们更好理解,我们还是可以参考以上代码。 


  六、DataGrid数据排序 

  数据排序在一些特殊的场合是必要的。下面我们将详细介绍DataGrid中的数据排序功能。在对DataGrid数据实现排序功能以前,我们需要做以下准备: 

  1、 将AutoGenerateColumns设为打开,这样自定义数据列功能将失去,同时也将失去直接编辑功能。其实这无关紧要的,数据显示和编辑分开不同页面这种模式其实是现在比较认可的方法。 

  2、 必须将AllowSorting设为真,这样,在每一列数据的标题将建立一个链接,点击这个链接将按照这个字段排序。 

  3、 必须建立排序事件,也就是OnSortCommand。 

  现在看代码: 

<asp:DataGrid id="dg" runat="server" 
Bordercolor="black" 
gridlines="vertical" 
font-names="Arial" 
font-size="10pt" 
HeaderStyle-BackColor="#FFCC00" 
ItemStyle-BackColor="#FFCC66" 
AlternatingItemStyle-BackColor="#FFFFFF" 
AutoGenerateColumns="True" 
OnEditCommand="dg_edit" 
OnCancelCommand="dg_cancel" 
OnUpdateCommand="dg_update" 
OnSortCommand="dg_sort" 
AllowSorting="True" 
> 
</asp:dataGrid>  

  以下是运行界面: 




  

  排序事件处理 

  排序需要用到DataView,现在我们来看排序处理: 

sub dg_sort(sender as object, e as DataGridSortCommandEventArgs) 
Dim dtable as DataTable = ds.Tables("users") 
Dim dview as new DataView(dtable) 
dview.sort = e.SortExpression.ToString & " ASC" 
dg.DataSource = dview 
dg.databind() 
end sub  

  从以上代码我们可以发现,数据排序功能的实现是需要依靠DataView的,排序以后,绑定数据。应用Data View还可以实现其他很多功能,我们在这里只介绍它的排序应用。 

  升序和降序 

  我们可以给用户选择升序和降序来排列数据: 

<form runat="server"> 
<asp:DataGrid id="dg" runat="server" 
Bordercolor="black" 
gridlines="vertical" 
font-names="Arial" 
font-size="10pt" 
HeaderStyle-BackColor="#FFCC00" 
ItemStyle-BackColor="#FFCC66" 
AlternatingItemStyle-BackColor="#FFFFFF" 
AutoGenerateColumns="True" 
OnEditCommand="dg_edit" 
OnCancelCommand="dg_cancel" 
OnUpdateCommand="dg_update" 
OnSortCommand="dg_sort" 
AllowSorting="True" 
> 
</asp:dataGrid> 
<p> 
<asp:radiobuttonlist runat="server" id="sortby" repeatdirection="horizontal" textalign="right" > 
<asp:listitem selected="true">Ascending</asp:listitem> 
<asp:listitem>Descending</asp:listitem> 
</asp:radiobuttonlist> 
</form> 
以上大部分代码我们都很熟悉,只是在最后加了两个选项来选择升序还是降序。我们来看事件处理: 
sub dg_sort(sender as object, e as DataGridSortCommandEventArgs) 
Dim sortby = Request.Form("sortby") 
Dim dtable as DataTable = ds.Tables("users") 
Dim dview as new DataView(dtable) 
If sortby = "Ascending" Then 
dview.sort = e.SortExpression.ToString & " ASC" 
Else If sortby = "Descending" Then 
dview.sort = e.SortExpression.ToString & " DESC" 
End If 
dg.DataSource = dview 
dg.databind() 
end sub  
 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -