欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

ASP.NET立即上手教程(10)_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:ASP.NET立即上手教程(9)
服務(wù)器端數(shù)據(jù)介紹 數(shù)據(jù)訪問是現(xiàn)實(shí)世界中應(yīng)用程序的核心內(nèi)容。Asp.net提供了一套豐富的控件,他與CLR(通用語言運(yùn)行庫)提供的用來管理數(shù)據(jù)訪問的APIs(應(yīng)用程序接口)緊密結(jié)合。本章預(yù)排幾個

在SQL數(shù)據(jù)庫中更新數(shù)據(jù)

在web應(yīng)用程序中更新數(shù)據(jù)庫常常是一件棘手的事情。DataGrid控件提供了一些內(nèi)建的支持,使得更新數(shù)據(jù)庫變得容易。要想編輯行記錄,DataGrid支持一個整數(shù)類型的EditItemIndex屬性,他用來指明表格控件的哪一行是可編輯的。當(dāng)設(shè)定該屬性之后,DataGrid中對應(yīng)的行用輸入框來代替標(biāo)簽。值-1表示沒有可編輯的行。Asp.net頁面可以在服務(wù)器端表單中包含DataGrid控件,通過DataGrid控件的對象模型來訪問可編輯的數(shù)據(jù)。

為了判斷哪一行將被編輯,你需要接收一些用戶的輸入,以此來判斷他們將編輯哪一行。DataGrid可以包含EditCommandColumn屬性,它提供了一個連接,用以激活三個特定的事件:EditCommand、UpdateCommand、和CancelCommand。EditCommandColumn被加在DataGrid的列集合中,如下面的例子所示:

以下為引用的內(nèi)容:

<ASP:DataGrid id="MyDataGrid" runat="server"
...
OnEditCommand="MyDataGrid_Edit"
OnCancelCommand="MyDataGrid_Cancel"
OnUpdateCommand="MyDataGrid_Update"
DataKeyField="au_id"
>

<Columns>
<asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" />
</Columns>

</ASP:DataGrid>

在DataGrid標(biāo)簽上,可以綁定每一個從EditCommandColumn激活的命令事件句柄。這些句柄的DataGridCommandEventArgs參數(shù)可以讓你直接訪問從客戶端選擇的可編輯行索引值。注意,為了使更改生效,你需要重新綁定DataGrid,像下面的例子這樣:

以下為引用的內(nèi)容:
public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs E) {
MyDataGrid.EditItemIndex = (int)E.Item.ItemIndex;
BindGrid();
}

當(dāng)編輯DataGrid中的行的時候,EditCommandColumn提供了可供使用的兩個連接:Update 和 Cancel。如果客戶端選擇了cancel,你只需將EditItemIndex設(shè)置為-1。如果客戶端選擇了Update,你需要對數(shù)據(jù)庫執(zhí)行你的更新命令。執(zhí)行更新命令的時候,你需要知道被編輯行在數(shù)據(jù)庫中對應(yīng)記錄的主鍵。為了支持這個功能,DataGrid提供了一個DataKeyField屬性,可以用來設(shè)置主鍵對應(yīng)的字段。在綁定到UpdateCommand的事件句柄中,你可以從DataGrid的數(shù)據(jù)鍵集合取得鍵的名稱。你可以使用事件的ItemIndex來索引集合,像下面的例子:

myCommand.Parameters["@Id"].Value = MyDataGrid.DataKeys[(int)E.Item.ItemIndex];


在更新事件句柄結(jié)束以后,將EditItemIndex設(shè)置為-1。下面的例子演示了這種情況。

前面的例子中有一個問題,那就是當(dāng)編輯一行的時候,主鍵字段(au_id)也提供了一個文本輸入框。因為需要這個值來確定數(shù)據(jù)庫中的哪一行記錄被更新,所以你可能不希望客戶端改變這個值。幸運(yùn)的是,你可以通過詳細(xì)指定每一個可編輯行的外觀,來禁止該列提供文本輸入框。具體方法是使用BoundColumn控件來分配每一列的數(shù)據(jù)字段,在DataGrid的列集合定義每一行。使用這種技術(shù)可以實(shí)現(xiàn)列的完全控制,當(dāng)然也包括ReadOnly屬性。對于au_id列,你可以設(shè)置它的ReadOnly屬性為true。這樣,當(dāng)一行處于編輯模式的時候,au_id列依然顯示為一個文本標(biāo)簽,而不是文本輸入框。下面的例子演示了這種技術(shù)。

BoundColumn控件并非DataGrid的列集合中可以設(shè)置屬性的唯一控件。你也可以指定TemplateColumn,它對列的內(nèi)容提供了完全的控制。模板對內(nèi)容的顯示更具有隨意性,你可以在DataGrid的列中提供你喜歡的任何控件,也包括服務(wù)器端控件。下面的例子演示了如何使用TemplateColumn,對"State"列使用下拉列表服務(wù)器控件,對"Contract"列使用復(fù)選框html控件。Asp.net數(shù)據(jù)綁定語法用于在模板中輸出數(shù)據(jù)字段的值。注意在編輯行中映射下拉列表和復(fù)選框到的state時候有一點(diǎn)小技巧。

如同在TemplateColumn中放置下拉列表框或者復(fù)選框一樣,你也可以在其中放置其他控件。下面的例子中,添加了一個Validator驗證控件,在執(zhí)行更新之前檢查客戶端的輸入。

在SQL數(shù)據(jù)庫中刪除數(shù)據(jù)

從數(shù)據(jù)庫中刪除記錄非常類似于更新或者插入命令,但是你依然需要確定表格中要刪除的特定行。可以添加到DataGrid列中的另一個控件是ButtonColumn,它僅僅提供了一個按鈕控件。ButtonColumn支持一個CommandName屬性,可以設(shè)置為“Delete”。在DataGrid上,當(dāng)你執(zhí)行刪除操作的時候,需要對DeleteCommand綁定一個事件句柄。此外,你需要使用數(shù)據(jù)鍵(DataKeys)集合來確定客戶端選定的行。下面的例子演示了這一過程:

從SQL數(shù)據(jù)庫中排序

對于任何表格來說,常常要求它對所包含的數(shù)據(jù)具有排序的能力。然而,DataGrid控件本身并不具有數(shù)據(jù)排序的功能。它通過用戶單擊要對數(shù)據(jù)排序的列標(biāo)題,調(diào)用事件句柄。當(dāng)DataGrid的 AllowSorting屬性被設(shè)置為true,DataGrid就為列標(biāo)題提供了一個超鏈接,用以對表格激活Sort命令。你可以給DataGrid的OnSortCommand屬性設(shè)置句柄,來處理用戶的單擊。列的名字作為SortExpression 的屬性,傳遞給DataGridSortCommandEventArgs的參數(shù)。該參數(shù)可以用來設(shè)置綁定到表格的DataView的Sort屬性。請看下面的代碼和例子。

以下為引用的內(nèi)容:

<script>
protected void MyDataGrid_Sort(Object Src, DataGridSortCommandEventArgs E) {
...
DataView Source = ds.Tables["Authors"].DefaultView;
Source.Sort = E.SortExpression;
MyDataGrid.DataBind();
}
</script>

<form runat="server">
<ASP:DataGrid id="MyDataGrid" OnSortCommand="MyDataGrid_Sort" AllowSorting="true" runat="server" />
</form>

當(dāng)你使用BoundColumn控件的時候,可以明確地為每一列設(shè)置SortExpression屬性,就象下面的實(shí)例
C# DataGrid12.aspx
[運(yùn)行] | [源代碼]
運(yùn)用主-從關(guān)系
常常有這樣的情況:數(shù)據(jù)模型包含的關(guān)系不能僅僅通過一個表格來表現(xiàn)。很多時候,在基于web的界面中,用戶選擇數(shù)據(jù)中的某一行(通常是標(biāo)題),然后重新定位到“細(xì)節(jié)”頁面(通常是內(nèi)容),顯示用戶所選行的詳細(xì)信息。為了使用DataGrid來完成這個工作,需要添加HyperLinkColumn到列集合。HyperLinkColumn指定當(dāng)用戶單擊超連接的時候?qū)⒁匦露ㄏ虻募?xì)節(jié)頁面。你可以在這個超鏈接中使用格式化字符串語法提交字段值,字段值作為get方式提交字符串的參數(shù)。下面的例子演示了這一過程。

以下為引用的內(nèi)容:
<ASP:DataGrid id="MyDataGrid" runat="server">
<Columns>
<asp:HyperLinkColumn
DataNavigateUrlField="au_id"
DataNavigateUrlFormatString="datagrid13_details.aspx?id={0}"
Text="Get Details"
/>
</Columns>
</ASP:DataGrid>

在細(xì)節(jié)頁面中,可以取得提交字符串的參數(shù),并且執(zhí)行一個聯(lián)合(join)查詢語句,從數(shù)據(jù)庫中獲取詳細(xì)信息。參閱下面的例子:

書寫和使用存儲過程

一般來說,執(zhí)行特定的查詢可以取得不同的執(zhí)行性能。使用存儲過程可以降低應(yīng)用程序中數(shù)據(jù)庫的負(fù)荷。存儲過程很容易創(chuàng)建,甚至可以使用SQL語句來創(chuàng)建。下面的代碼建立了一個簡單的返回一個表的存儲過程:

以下為引用的內(nèi)容:
CREATE Procedure GetAuthors AS
SELECT * FROM Authors
return
GO

你也可以建立一個可以接受參數(shù)的存儲過程,例如:

以下為引用的內(nèi)容:
CREATE Procedure LoadPersonalizationSettings (@UserId varchar(50)) AS
SELECT * FROM Personalization WHERE UserID=@UserId
return
GO

從ASP.NET頁面中使用存儲過程不過是SqlCommand對象的擴(kuò)展。CommandText是用來代替特定查詢文本的存儲過程的名字。你可以通過設(shè)定CommandType的屬性來指定SqlCommand的CommandText為存儲過程。

myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;

下面的例子演示了調(diào)用存儲過程來填充DataSet。

分享:ASP.NET立即上手教程(7)
Web Forms 用戶控件 用戶控件介紹 除了ASP.NET提供的內(nèi)建的服務(wù)器控件外,你還可以使用已經(jīng)掌握的制作WEB FORMS 頁面的技術(shù),輕松的定義自己的控件。實(shí)際上,只需要稍微改動一下,幾乎任何W

來源:模板無憂//所屬分類:.Net教程/更新時間:2008-08-22
相關(guān).Net教程