国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ADO.NET 數據庫實例教程

2024-07-10 13:04:40
字體:
來源:轉載
供稿:網友


收集最實用的網頁特效代碼!

  ado.net數據庫編程比較復雜,名目繁多的類、對象、屬性、方法讓每一個編程者都感覺惱火。本文旨在介紹asp.net beta2數據庫編程的主要內容,幫助編程者最快的了解ado.net數據庫編程的精髓。

  一、 managed providers

  如果你是初學者,可能你會問,什么是"managed providers"?

  managed providers提供簡單的方法連接和訪問數據庫,有點類似于數據庫連接,當然又比它強的多。managed providers提供oledb和sql server兩種編程接口。因為sql server是微軟自己的產品,因此,專門提供了一個針對sql server的接口,使用這個接口訪問sql server的效率應該比使用oledb強。

  namespaces

  本文所有的例子程序都需要使用以下namespaces:

<%@ import namespace="system.data" %>
<%@ import namespace="system.data.oledb" %>

  connection

  為了連接數據庫,必須使用oledbconnection:

dim objconn as new oledbconnection
("provider=microsoft.jet.oledb.4.0; data source=e:/sff/site/db/users.mdb")

  當然,你也可以將具體的連接方法作為變量使用,在連接數據庫以后,必須打開數據庫:

objconn.open()

  這樣,就可以使用數據庫了,一般在最后,我們都要求關閉數據庫連接:

objconn.close()
objconn=nothing

  command

  連接數據庫以后,就可以發送命令對數據庫進行操作了,oledbcommand允許發送命令對數據庫進行操作。根據發送的sql語句,我們可以對數據庫進行幾乎所有操作。

dim objcmd as new oledbcommand("select * from users", objconn)

  以上語句建立command,根據習慣不同,也可以使用以下方法:

dim objcmd as new oledbcommand()
objcmd.connection = objconn
objcmd.commandtext = "select * from users"

  還可以這樣:

dim objcmd as new oledbcommand(sql string, connection string)


  仔細觀察上面的語句,我們發現在定義oledbcommand時,可以同時使用數據庫連接oledbconnection和數據庫連接語句。以上代碼并沒有執行sql語句,現在我們來看到底怎樣執行:

  executenonquery

  當執行沒有返回數據的操作的時候,我們可以使用以上方法,比如插入數據、更新數據等操作,具體這樣執行:

objcmd.executenoquery

  executereader

  在需要一個data reader的時候,我們可以使用以上方法,具體這樣執行:

dim objrd as oledbdatareader
objrd = objcmd.exeutereader

  executescalar

  使用executescalar方法來取得一個單個地返回數據,比如對數據的統計。

  data reader

  oledbreader是專門用來讀取數據的對象,這個對象除了讀數據以外,不能做其他任何數據庫操作。盡管比較簡單,但是在用來瀏覽數據的時候效率是非常高的。

dim objreader as oledbdatareader
objreader = objcmd.executereader
while objreader.read
response.write(objreader.getstring(0) & "<br>")
end while

  以上語句讀取command的返回結果的第一個字段,這個字段是字符型數據。我們可以使用其他方法取得各種類型的數據:

    getboolean(x)

    getbyte(x)

    getbytes(x)

    getchar(x)

    getchars(x)

    getdatatypename(x) -取得數據類型

    getdatetime(x)

    getdecimal(x)

    getdefaultstream(x)

    getdouble(x)

    getfieldtype(x)

    getfloat(x)

    getguid(x)

    getint16(x)

    getint32(x)

    getint64(x)

    getname(x) - 取得字段名

    getordinal(name) -根據字段名取得字段序號

    getstring(x)

    gettimespan(x)

    getvalue(x)

    getvalues(values())

  以上方法都是command返回數據。

  data adapter

  oledbdataadapter取得數據并且數據與dataset之間建一座橋梁,可以這樣使用:

dim objadapter as new oledbdataadapter("select * from users", objconn)

  實現方法有點類似于oledbcommand。oledbadapter可以填充dataset,也可以修改數據然后提交以實現對具體數據的修改:

dim ds as dataset = new dataset()
objadapter.fill(ds, "users")

  以上語句實現將sql語句取得的users表的數據填充到dataset。

  mappings

  mappings可以實現對dataset的列取別名:

objadapter.tablemappings.add("adbtable", "users")
with objadapter.tablemappings(0).columnmappings
.add("pid", "id")
.add("lastname", "lname")
.add("streetaddress", "addy")
end with
objadapter.fill(ds)

  當使用了以上代碼以后,就可以用ds.tables("users")來代替ds.tables("adbtable")了。

  command builder

  在下一章我們可以看到command builder的具體使用和強大功能。

  練習:

  如果你能理解以下代碼,你就可以看下一章的內容了:

<%@ 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:/sff/site/db/users.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")

end sub
</script>

  二、 data set

  本章將介紹dataset對象,dataset對象包含內容很多,我們基本上都將涉及,包括datatables、datarows等。

  什么是dataset

  回頭看看asp,我們知道當查詢數據的時候,返回的數據是放在recordset中的,recordset只能保存返回的一個表的數據,而且它很不靈活。

  dataset在recordset上增加了很多功能,并且,它可以保存多個返回的數據表結果。

  dataset被分解為很多部分比如datatables和datarows,可以使用它們創建一個dataset而不一定要連接到一個具體的數據庫。當然,dataset本身就是離線數據,所有的數據都可以離線使用而不必一直連接到數據庫,只有需要對數據庫進行編輯的時候才需要連接到數據庫。

  實踐

dim ds1 as new dataset()
dim dtable as new datatable("people")
with dtable.columns
.add("fname", system.type.gettype("system.string"))
.add("lname", system.type.gettype("system.string"))
.add("uid", system.type.gettype("system.int32"))
end with
dtable.columns("uid").autoincrement = true
ds1.tables.add(dtable)

dim pkey() as datacolumn = {ds1.tables("people").columns("uid")}
ds1.tables("people").primarykey = pkey

  以上語句稍微有點復雜,我們來看看:

  前半部分我們建立了一個dataset和一個叫people的datatable,然后,我們為這個datatable加入了三個列并將"uid"列設為自動遞增。最后,將這個datatable加入到了dataset。

  第二部分我們現在不需要理解,只要知道定義了主鍵就可以了。

  datatables

  datatable就是一個數據表,我們可以對這個表進行如:增加數據、修改數據等操作。我們也可以通過dataset建立一個datatable:

dim dtable as datatable = ds1.tables("people")

  這樣,將dataset的表people的結構和數據拷貝到了datatable中,盡管它是無連接的,但是仍然可以通過修改這個dataset來更新dataset表,因此,如果我們在dtable中增加一列并且接受改變就以實現對dataset的修改:

dim row as datarow = dtable.newrow()
row(0) = "philip"
row(1) = "quinn"
dtable.rows.add(row)
dtable.acceptchanges

  這樣我們就建立了一個新的datarow,這和用dtable.newrow()建立一個新的數據列一樣,我們還可以給這個列取名了fname。

  因為以上的datatable來自dataset,如果我們使用dtable.acceptchanges方法更新datatable,dataset也會被更新:

<%@ import namespace="system.data" %>
<script language="vb" runat="server">
sub page_load(sender as object, e as eventargs)
dim ds1 as new dataset()
dim dtable as new datatable("people")
with dtable.columns
.add("fname", system.type.gettype("system.string"))
.add("lname", system.type.gettype("system.string"))
.add("uid", system.type.gettype("system.int32"))
end with

dtable.columns("uid").autoincrement = true
ds1.tables.add(dtable)

dim dtable2 as datatable = ds1.tables("people")

dim row as datarow = dtable2.newrow()
row(0) = "philip"
row(1) = "quinn"
dtable2.rows.add(row)
dtable2.acceptchanges

response.write(ds1.tables("people").rows(0)("fname").tostring)
end sub
</script>

  以上代碼將顯示"philip",現在我們來看看具體過程:

  1、 建立一個dataset和一個叫"people"的datatable;

  2、 增加三個數據列并且設置它們的數據屬性;

  3、 將它們加入到dataset;

  4、 建立另外一個datatable,這個datatable是剛才建立的那個的拷貝;

  5、 用datatable建立新的datarow并加入數據;

  6、 接受數據改變同時更新了dataset;

  7、 顯示第一個數據列;

  datarows

  datarow是datatable的數據列,剛才我們已經看到,我們可以使用datatable的以下方法建立一個新的datarow:

ds1.tables("people").rows(0)("fname") = "phil"

  以上語句中,ds1.tables("people")選擇表"people",.rows(0)選擇表的第一行,("fname")選擇表的字段為"fname"。

  datarows是數據列的集合,通過以下語句取得:

dim drow as datarowcollection = ds1.tables("people").rows

  對于datarows,我們基本上不能做太多。如果針對一個具體的數據列,我們可以這樣:

dim drow2 as datarow = drow.item(0)

  需要修改這個列的數據,可以這樣:

drow2(0) = "philip"
drow2.acceptchanges

  可能說了那么多,我們都覺得比較復雜,我們很容易就理清了dataset、datatable、datarowcollection、datarows、datacolumn和datacolumncollection之間的相互關系。

  三、 dataset的使用

  在第一章我們介紹了數據連接、執行查詢等內容,第二章我們介紹了dataset的方方面面,這一章我們將具體使用dataset。

dataset <-> data source

  dataset和data source通過dataadapter進行聯系,當dataset取得數據庫數據以后,就和數據庫斷開連接,針對數據作的所有數據修改在沒有提交以前都在dataset里面保存。

  數據修改

  我們將通過一個小的舉例來說明數據怎樣被修改和提交。

  這是數據結構(access設計)

field nametypefname lnameid
fnametextphilipquinn 1
lname textjoesphpayne2
idautonumberdouglasadams 3
  michaelokuda4

  舉例一:

  我們將一段一段的看程序代碼:

<%@ page language="vb" %>

<%@ import namespace="system.data" %>
<%@ import namespace="system.data.oledb" %>
<script language="vb" runat="server">
sub page_load(sender as object, e as eventargs)

  以上代碼導入namespace同時說明編程語言為vb;

dim objconn as new oledbconnection("provider=microsoft.jet.oledb.4.0; data source=e:/sff/site/db/test.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")

  以上代碼建立了connection、dataadapter和commandbuilder,并且填充了dataset。我們必須注意以下幾點:

  一、 dataadapter是數據和dataset之間的橋梁;

  二、 commandbuilder建sql語句來執行;

dim drow as datarow

  以上語句聲明一個datarow;

drow = ds.tables("users").newrow()

drow(0) = "gene"
drow(1) = "rodenberry"
ds.tables("users").rows.add(drow)

drow = ds.tables("users").newrow()

drow(0) = "maxwell"
drow(1) = "stewart"
ds.tables("users").rows.add(drow)

  以上代碼為dataset增加一個新的列;

objadapter.update(ds, "users")

  以上代碼將更新提交到數據庫;

end sub
</script>

  現在看看數據庫,會發現已經多了兩列。

  另外一個舉例

  我們可以看一個完整的舉例:

<%@ 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:/sff/site/db/test.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")

dim drow as datarow

drow = ds.tables("users").rows(1)

drow(0) = "joseph"

ds.tables("users").rows(0).acceptchanges

objadapter.update(ds, "users")

end sub
</script>

  總結:

  以上我們知道了怎樣更新dataset的數據,可能那些并不是特別實用,下一章我們將涉及到用較好的方式顯示數據和通過textbox修改數據。

  四、數據顯示和修改

  這一章我們將學習怎樣顯示數據,喜歡偷懶的你可以從拷貝以下代碼開始:

<%@ 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:/sff/site/db/test.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:腳格式

  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" />
以上代碼很簡單,就是綁定數據。
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:/sff/site/db/test.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" />
<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

  事件先查看用戶選擇,然后根據用戶選擇來處理排序方式。

  總結:

  以上所有章節介紹了asp.net數據庫處理,雖然簡單,但是應該還是可以給讀者一些幫助的。需要注意的是,數據庫處理還有很多其他方面沒有介紹,在使用過程中需要我們不斷學習。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庆阳市| 西吉县| 文山县| 稻城县| 洮南市| 三门县| 永丰县| 昂仁县| 广水市| 宜君县| 体育| 乃东县| 石屏县| 大渡口区| 军事| 田东县| 漳州市| 嵊泗县| 漳浦县| 信宜市| 金堂县| 鄂温| 赤壁市| 镇赉县| 南漳县| 黄龙县| 文化| 灵石县| 瑞安市| 固始县| 宜阳县| 松桃| 龙门县| 吉林省| 兴城市| 普安县| 交口县| 兴化市| 禄劝| 静宁县| 濉溪县|