原文發佈日期:2006.10.27
作者:Bipin Joshi
翻譯:webabcd
介紹
幾個月前我寫了三篇文章:動態創建DataGrid的列,動態創建DataGrid的模板列(一)和動態創建DataGrid的模板列(二)。甚至到今天這些文章依舊是閱讀排行榜的前幾名。這說明了很多開發人員都要動態的創建gird控件。從這篇文章開始,我將寫一系列的文章來講述如何創建諸如GridView和DetailsView這樣的數據綁定控件。本文的第一部分會說明如何增加綁定字段和命令字段,從而實現更多的功能,如分頁,排序,編輯等。
新建一個web站點實例
在Visual Studio裏新建一個web站點。拖拽一個GridViw控件和一個SqlDataSource控件到默認的webform上。不要在設計階段設置控件的任何屬性,我們將通過編碼實現它的功能。
下面給出在Page_Load事件中的代碼
{
SqlDataSource1.ConnectionString = @"data source=.;initial catalog=northwind;integrated security=true";
SqlDataSource1.SelectCommand = "select employeeID,FirstName,LastName from employees";
SqlDataSource1.UpdateCommand = "update employees set firstname=@FirstName,lastname=@LastName where employeeid=@EmployeeID";
SqlDataSource1.UpdateParameters.Add("@FirstName", "");
SqlDataSource1.UpdateParameters.Add("@LastName", "");
SqlDataSource1.UpdateParameters.Add("@EmployeeID", "");
if (!IsPostBack)
{
GridView1.DataSourceID = "SqlDataSource1";
GridView1.AutoGenerateColumns = false;
GridView1.DataKeyNames = new string[] { "EmployeeID" };
GridView1.AllowPaging = true;
GridView1.AllowSorting = true;
GridView1.PageSize = 5;
BoundField bf1 = new BoundField();
BoundField bf2 = new BoundField();
BoundField bf3 = new BoundField();
bf1.HeaderText = "Employee ID";
bf1.DataField = "EmployeeID";
bf1.ReadOnly = true;
bf1.SortExpression = "EmployeeID";
bf2.HeaderText = "First Name";
bf2.DataField = "FirstName";
bf2.SortExpression = "FirstName";
bf3.HeaderText = "Last Name";
bf3.DataField = "LastName";
bf3.SortExpression = "LastName";
CommandField cf = new CommandField();
cf.ButtonType = ButtonType.Button;
cf.ShowCancelButton = true;
cf.ShowEditButton = true;
GridView1.Columns.Add(bf1);
GridView1.Columns.Add(bf2);
GridView1.Columns.Add(bf3);
GridView1.Columns.Add(cf);
}
}
接下來我們一步一步地對這些代碼做說明。
配置SQL數據源控件。
這段代碼設置ConnectionString屬性是給SQL數據源控件配置所需的數據庫連接字符串所用的。在我們的例子裏,我們將使用Notthwind數據庫裏的Employees表。然後給SelectCommand和UpdateCommand屬性設置相應的select和update語句。update語句很重要,注意在update聲明裏所列舉的參數名稱要和數據表裏列的名字相匹配。update聲明包含三個參數,@FirstName, @LastName 和 @EmployeeID。這些參數然後會被添加到UpdateParameters集合裏。
配置GridView控件
GridView控件使用SqlDataSource1作爲它的數據源。代碼裏已經指出瞭如何設置GridView的DataSourceID屬性。然後要設置更多的GridView屬性,注意你只需要在"if"條件裏設置這些屬性一次。AutoGenerateColumns屬性指明瞭GridView的列是否是自動建立的。應爲我們希望通過編碼增加列,所以要把這個屬性設置爲false。DateKeyNames屬性是一個關鍵字列的字符串數組。AllowPaging和AllowSorting屬性分別對應分頁和排序特性。PageSize屬性將頁大小設爲5。
創建BoundFiled列
GridView控件包含一些諸如BoundField,HyperLinkField,和TemplateField這些類型之類的列。在這個例子中我們將使用BoundField列。我們需要給EmployeeID,FirstName和LastNam分別提供三個BoundFiled列。一個bound filed是通過聲明BoundField來創建的。BoundField的HeaderText屬性是用來指出列的標題的。是否給出SortExpression屬性決定着bound filed是否可以被排序。如果SortExpression屬性設置成了一個列的名字,那麼bound field將以此爲基礎進行排序。EmployeeID列是作爲關鍵字被顯示的,所以要把它的ReadOnly屬性設置爲true,其用意是該列不能被編輯。
爲了提供編輯特性,你需要給GridView增加一個CommandField列。其ButtonType屬性用來指明按鈕是以何種形式來呈現的,其可能的值有Button,LinkButton和ImageButton。ShowCancelButton和ShowEditButton屬性決定了是否顯示編輯和取消按鈕。
一旦我們創建了列,它們就會在GridView中增加相應的列。
本文到此結束!如果你運行這個webform將會如下顯示。
你可以測試GridView的分頁,排序和編輯等屬性。
作者:Bipin Joshi
Email:http://www.dotnetbips.com/contact.aspx
簡介:Bipin Joshi是DotNetBips.com的管理員。他是http://www.binaryintellect.com/的發起人,這個公司提供.NET framwork的培訓和諮詢服務。他在印度孟買爲開發者提供培訓。他也是微軟的MVP(ASP.Net)和ASPInsiders的會員。