在asp.net中用來(lái)顯示數據的控件有Repeater,DataList,DataGrid三種. DataGrid的靈活性很強,內置了豐富的事件,提供分頁(yè),編輯,排序等一些特性,對表格的操作也是非常方便的,而且還有很多種的風(fēng)格可選,由于自帶了很多的功能和特性,所以開(kāi)發(fā)速度很快,容易部署。但它的性能不是很高,每次的操作都會(huì )返回到服務(wù)器。主要用在對有排序、分頁(yè)、編輯和多列的顯示,而且對性能的要求不是很高,一般情況下數據源是一個(gè)DateSet。
DataList和DataGrid一樣也有強大的模版特性,支持數據的編輯,性能比DataGrid好,不足之處在于開(kāi)發(fā)周期相對與DataGrid較長(cháng),沒(méi)有DataGrid中的編輯器,實(shí)現分頁(yè)和排序比較困難。主要應用在單列的數據列表,高性能的自定義數據表。
Repeater是完全以HTML的方式呈現,更加自由靈活,性能是三種顯示控件中最高的。但不支持編輯、分頁(yè)、排序,幾乎沒(méi)有什么特性。開(kāi)發(fā)周期是最長(cháng)的。主要用在一些對性能和靈活性比較高的數據的顯示。
在使用DataGrid時(shí)應該注意的一些問(wèn)題
DataGrid控件有一個(gè)很重的屬性AutoGenerateColumns,默認的時(shí)候該屬性的值是true,當他為true的時(shí)候,會(huì )將綁定的表中所有的字段都顯示出來(lái),而我們在實(shí)際應用的時(shí)候往往只需要把我們想要的字段顯示,這時(shí)候我們要將AutoGenerateColumns屬性的值設置為false,可以自定義地選擇顯示那些列在控件上。如果我們設置成了自動(dòng)生成列,就不要再再DataGrid中指定顯示列,否則就會(huì )產(chǎn)生重復列。
在DataGrid中的非模版列找一個(gè)控件可以用datagriditem.Cells[第幾個(gè)單元格].Controls[第幾個(gè)控件] 這時(shí)候下標是從0開(kāi)始的,但是在使用模版列時(shí),Control的index必須都要加一,因為Control[0]是LiteralControl,值為空相當于一個(gè)空格。這時(shí)最好是采datagriditem.findcontrol["控件名稱(chēng)"]來(lái)獲得。
當我們在DataGrid中添加了按鈕列的刪除時(shí),我們要去判斷要刪除了數據項是否為最后一項,如果是最后一項,還應判斷當前頁(yè)是否為第一頁(yè),如果不是第一頁(yè),應該將當前的索引減1。在DataGrid中的deleteCommand事件中添加以下代碼可以實(shí)現。
if(this.datagrid.items.count= =1)
{
if(this.DataGrid.CurrentPageIndex!=0)
{
This.DataGrid.CurrentPageIndex=this.DataGrid.CurrentPageIndex-1;
}
}
在刪除一條記錄時(shí)為了更人性化,應該在我們點(diǎn)擊刪除按鈕時(shí),會(huì )彈出一個(gè)對話(huà)框來(lái)讓我們確定是否要刪
除記錄,在DataGrid控件的ItemDataBound事件中添加以下代碼可以實(shí)現這個(gè)功能,并且是在客戶(hù)端執行。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。