導航:首頁 > 數據處理 > 哪個數據控制項可以自定義輸出

哪個數據控制項可以自定義輸出

發布時間:2023-01-10 01:51:25

『壹』 誰介紹一款比較好的表格控制項

1. GridView 控制項 GridView 控制項用於顯示表中的數據。通過使用 GridView 控制項,您可以顯示、編輯、刪除、排序和翻閱多種不同的數據源(包括資料庫、XML 文件和公開數據的業務對象)中的表格數據。 顯示表格數據是軟體開發中的一個周期性任務。ASP.NET 提供了許多工具來在網格中顯示表格數據,例如 GridView 控制項。通過使用 GridView 控制項,可以顯示、編輯和刪除多種不同的數據源(例如資料庫、XML 文件和公開數據的業務對象)中的數據。 可以使用 GridView 來完成以下操作: 通過數據源控制項自動綁定和顯示數據。 通過數據源控制項對數據進行選擇、排序、分頁、編輯和刪除。 另外,還可以通過以下方式自定義 GridView 控制項的外觀和行為: 指定自定義列和樣式。 利用模板創建自定義用戶界面 (UI) 元素。 通過處理事件將自己的代碼添加到 GridView 控制項的功能中。 1.1 使用 GridView 控制項進行數據綁定 GridView 控制項提供了兩個用於綁定到數據的選項: 使用 DataSourceID 屬性進行數據綁定,此選項讓能夠將 GridView 控制項綁定到數據源控制項。建議使用此方法,因為它允許 GridView 控制項利用數據源控制項的功能並提供了內置的排序、分頁和更新功能。 使用 DataSource 屬性進行數據綁定,此選項使能夠綁定到包括 ADO.NET 數據集和數據讀取器在內的各種對象。此方法需要為所有附加功能(如排序、分頁和更新)編寫代碼。 當使用 DataSourceID 屬性綁定到數據源時,GridView 控制項支持雙向數據綁定。除可以使該控制項顯示返回的數據之外,還可以使它自動支持對綁定數據的更新和刪除操作。 1.2 在 GridView 控制項中設置數據顯示格式 可以指定 GridView 控制項的行的布局、顏色、字體和對齊方式。可以指定行中包含的文本和數據的顯示。另外,可以指定將數據行顯示為項目、交替項、選擇的項還是編輯模式項。GridView 控制項還允許指定列的格式。 1.3 使用 GridView 控制項編輯和刪除數據 默認情況下,GridView 控制項在只讀模式下顯示數據。但是,該控制項還支持一種編輯模式,在該模式下控制項顯示一個包含可編輯控制項(如 TextBox 或 CheckBox 控制項)的行。您還可以對 GridView 控制項進行配置以顯示一個 Delete 按鈕,用戶可單擊該按鈕來刪除數據源中相應的記錄。 GridView 控制項可對其關聯數據源自動執行編輯和刪除操作,使無需編寫代碼即可啟用編輯行為。或者,也可以以編程方式控制編輯和刪除數據的過程(如在 GridView 控制項綁定到只讀數據源控制項的情況下)。 可以使用模板對當某個行處於編輯模式時使用的輸入控制項進行自定義。 1.4 GridView 排序功能 GridView 控制項支持在不需要任何編程的情況下通過單個列排序。通過使用排序事件以及提供排序表達式,您可以進一步自定義GridView 控制項的排序功能。 1.5 GridView 分頁功能 GridView 控制項提供一種簡單的分頁功能。可以通過使用 GridView 控制項的 PagerTemplate 屬性來自定義 GridView 控制項的分頁功能。 適用場景 GridView 控制項一般適用於以表的形式顯示規則的二維關系數據。例如用於顯示站點下所有用戶的列表。 2. DataList 控制項 DataList Web 伺服器控制項以可自定義的格式顯示資料庫行的信息。顯示數據的格式在創建的模板中定義。可以為項、交替項、選定項和編輯項創建模板。標頭、腳注和分隔符模板也用於自定義 DataList 的整體外觀。通過在模板中包括 Web 伺服器控制項,可將列表項連接到代碼,這些代碼使用戶得以在顯示、選擇和編輯模式之間進行切換。 DataList 與GridView不同,必須通過自定義的template 來顯示數據項。DataList 與 GridView相比不支持排序,分頁功能。 適用場景 DataList 一般適用於顯示「單列多行」關系的數據,例如用於顯示產品列表,每一個ListItem顯示一件產品的信息,你可以為ListItem 定義自己需要的格式。 3. Repeater 控制項 Repeater Web 伺服器控制項是一個容器控制項,它使可以從頁的任何可用數據中創建出自定義列表。Repeater 控制項不具備內置的呈現功能,這表示用戶必須通過創建模板為 Repeater 控制項提供布局。當該頁運行時,Repeater 控制項依次通過數據源中的記錄,並為每個記錄呈現一個項。 Repeater 控制項與上述2 個控制項相比顯得最為單薄,Repeater 一般用於只讀的數據,對數據呈現的列表不具備編輯,排序,分頁等功能。 適用場景 功能非常單薄,它使用數據源返回的一組記錄呈現只讀列表。 4.DetailsView 控制項 DetailsView 控制項一次呈現一條表格形式的記錄,並提供翻閱多條記錄以及插入、更新和刪除記錄的功能。DetailsView 控制項通常用在主/詳細信息方案中,在這種方案中,主控制項(如 GridView 控制項)中的所選記錄決定了 DetailsView 控制項顯示的記錄。 5.FormView 控制項 FormView 控制項與 DetailsView 控制項類似,它一次呈現數據源中的一條記錄,並提供翻閱多條記錄以及插入、更新和刪除記錄的功能。不過,FormView 控制項與 DetailsView 控制項之間的差別在於:DetailsView 控制項使用基於表格的布局,在這種布局中,數據記錄的每個欄位都顯示為控制項中的一行。而 FormView 控制項則不指定用於顯示記錄的預定義布局。實際上,將創建包含控制項的模板,以顯示記錄中的各個欄位。該模板包含用於設置窗體布局的格式、控制項和綁定表達式。

『貳』 vs裡面的數據控制項都有啥用處啊,gridview控制項,datalist控制項。sqldatasourcr等等。謝了。

gridview和datalist都是用來綁定數據的,sqldatasource是sql數據源,同樣accessdatasoure是access數據源。數據源和控制項是一起使用的,當然數據源不一定要用系統給的,可以自定義數據源。

『叄』 如何使用DataGrid控制項

〔DataGrid控制項〕

在三種控制項當中,DataGrid是迄今為止功能最為豐富的,但也是最不靈活的控制項。這種在輸出HTML時不夠靈活的特點是因為它最初就是被設計成以表格的形式輸出數據。每一條記錄輸出時會建立一對<tr>標簽,而每個欄位的值輸出時則建立一對<td>標簽。

DataGrid含有幾個屬性可以提高其可用性。如,通過設置DataGrid的AllowSorting屬性為true,並加入少量代碼,DataGrid就具備了按不同欄位排序的功能。此外,設定相關屬性來實現分頁以及單條記錄編輯的功能更加增強了DataGrid的可用性。

除了在可用性方面的支持以外,DataGrid同時也相當節省開發時間。使用DataGrid在WEB頁面上顯示數據只需要兩行代碼。一行用來設定與DataGrid綁定的數據源(DataSource),另一條則用來執行綁定命令(DataBind())。當然,在Repeater中實現這樣的功能並非不可能,只是,相比較使用DataGrid而言,你需要花費相當多的時間和精力來實現這些功能。

盡管DataGrid有這樣那樣令人印象深刻的優點,它的兩個缺點也同樣不能忽視。首先,如前所述,DataGrid在個性化輸出數據方面功能有限。當然,你可以定製字體、顏色以及線條寬度等等,但它始終只能是HTML表格。

每個在DataGrid中的列都是DataGridColumn類的一個實例。有五種DataGrid列的形式:

·BoundColumn
·ButtonColumn
·EditColumn
·HyperLinkColumn
·TemplateColumn

每種類型都會以一種方式允許頁面訪問與DataGrid進行交互。例如,BoundColumn將DataSource的欄位值顯示為純文本;而HyperLinkColumn則將之顯示為一個超級鏈接。另外,開發者可以通過寫一個繼承自DataGridColumn的自定義類來定製DataGrid列的樣式。

盡管DataGrid具有這么多的增強可用性的屬性,卻仍然顯得死板而不夠靈活。這是因為,不論什麼樣的屬性,都需要對DataGrid所生成的表格進行相關的設置而生效。這無疑會使表格變得臃腫而失去靈活性。例如,DataGridColumn的設置會對表格的每一行的相應列生效。DataGrid的這種局限性阻礙了更有創意地顯示數據。比如,你希望每五條記錄被顯示在一行,或根本不想要表格來顯示數據,你將不得不放棄使用DataGrid。

DataGrid的第二個缺陷是它的性能。在三種數據控制項中,DataGrid是相對性能最差的。由DataGrid所生成的ViewState將會相當龐大,特別是在DataGrid含有較多的行時。當然,你也可以關閉ViewState功能,但代價是你將不能使用排序、分頁以及記錄編輯等功能。

為了測量DataGrid的性能,我使用了微軟的Web Application Stress Tool (WAST)。精確的測試條件設定以及測試用代碼將會在本文的結尾給出。

WAST將會對WEB伺服器發出對一個特定URL的請求。每個測試將會針對一個URL在一分鍾之內連續不斷地請求。WAST將會一個代表性能的數值,代表WEB伺服器將會在一秒鍾內執行ASP.Net頁面多少次。

兩個測試將顯示一個僅僅顯示數據的DataGrid。DataGrid將會顯示Northwinds資料庫中的Customers表的4個欄位的內容(總計91條記錄)。DataGrid的AutoGenerateColumns屬性將會被設為True。第一個測試將DataGrid置於一個Form中,第二個則不置於Form中。將控制項置於Form中而不指定其EnableViewState為False,則控制項將會一直使用ViewState來維持其狀態。對ViewState的設定是為了有一個耗時的處理過程,來看一下它對於每秒種的頁面請求有什麼樣的影響。測試結果見圖1。

圖1:對DataGrid的每秒請求次數

在下面我們要討論並測試的DataList和Repeater中,我們會看到它們的性能將優於DataGrid。

〔DataList控制項〕

如前所述,DataGrid使用表格來顯示數據。你也許需要更進一步地控制數據的顯示。例如,你想使數據在表格中顯示,但不是每行只有一條記錄,而是多條。又或者,你並不想使用表格來顯示數據,而是只將它們顯示在一系列<span>標簽中。

DataList放棄了DataGrid中列表顯示數據的概念,而是使用事先定義好的模板(Template)來定製顯示。通過使用模板,可以同時使用HTML標簽或數據綁定。這里的數據綁定的形式為:<%# … %>,用來顯示數據源中給定條目的數據記錄。如下的ItemTemplate將會顯示數據源中CompanyName欄位:

<asp:DataList runat="server" id="myDataList">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "CompanyName") %>
</ItemTemplate>
</asp:DataList>

通過修改上面的模板,我們可以使CompanyName欄位顯示為粗體字,而ContactName欄位則以正常式樣顯示在CompanyName之下。

<asp:DataList runat="server" id="myDataList">
<ItemTemplate>
<b><%# DataBinder.Eval(Container.DataItem, "CompanyName") %></b>
<br />
<%# DataBinder.Eval(Container.DataItem, "ContactName") %>
</ItemTemplate>
</asp:DataList>

對於DataList數據源中的每一條記錄,ItemTemplate會通過定義HTML標簽來以相同的樣式顯示數據。ItemTemplate還支持其它其它6種模板:

·AlternatingItemTemplate
·EditItemTemplate
·FooterTemplate
·HeaderTemplate
·ItemTemplate
·SelectedItemTemplate
·SeparatorTemplate

默認情況下DataList會將記錄顯示在HTML表格中。然而,通過設定RepeatColumn屬性,你可以設置在一行中顯示多少條記錄。更進一步,你甚至可以指定DatList的內容不顯示在表格中,而是<span>標簽中。這可以通過設定RepearLayout屬性來實現。

通過模板、RepeatColumn和RepeatLayout屬性,很明顯DataList在定製數據輸出樣式方面較DataGrid更具靈活性,使得用戶界面設計可以更加友好。當然,我們還需要進行功能性的對比,如分頁、排序、記錄編輯等等。

通過EditItemIndex模板和EditCommand,UpdateCommand以及CancelCommand事件,DataList將支持記錄編輯的功能。不過,比較DataGrid而言,這需要耗費更多的開發時間來實現。這種開發時間上的不一致主要有兩個原因:

·編輯/更新/刪除按鈕在DataGrid中可以通過設定EditCommandColumn來自動添加;而在DataList中則需要手動添加。

·DataGrid的BoundColumn列樣式自動使用文本框控制項來顯示記錄編輯界面。而在DataList中,你必須通過EditItemTemplate明確地指定使用什麼樣的編輯界面。

實現DataList中的分頁、排序功能同記錄編輯功能情況一樣,並不算非常復雜。這些功能可以通過巧妙的編程加以實現,只是耗費一些開發時間。所以,如果需要用戶對數據記錄進行排序或編輯的話,使用DataGrid要比使用DataList方便得多。

DataList的性能要比DataGrid好一些,特別是當DataList被包含在Form當中時。圖2顯示了WAST對DataList的測試。

圖2:對DataList的每秒請求次數

可以看出,在被Web Form包含的情況下,DataList的性能要明顯好於DataGrid。

〔Repeater控制項〕

Repeater控制項是三種數據控制項中在HTML輸出方面最為靈活的控制項。Repeater會按照你所要求的樣式嚴格地輸出數據記錄。所以,如果你不想以表格方式或者簡單的<span>輸出數據,那麼最好使用Repeater。

與DataList一樣,Repeater使用模板來指定輸出樣式。Repeater支持如下五種模板:

·AlternatingItemTemplate
·FooterTemplate
·HeaderTemplate
·ItemTemplate
·SeparatorTemplate

HederTemplate和FooterTemplate指定在真正的記錄輸出之前或之後應處理的HTML內容。AlternatingItemTemplate和ItemTemplate則指定實際的每條輸出記錄的HTML樣式。如,你需要綁定一個包含雇員信息的DataSet到一個Repeater,欄位名為EmployeeName。如果你想在頁面中不排序地顯示這些記錄,你可以使用如下的語句:

<asp:Repeater runat="server" id="rptEmployees">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li><%# DataBinder.Eval(Container.DataItem, "EmployeeName") %></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>

Repeater類不是繼承自WebControl類的,這一點與DataGrid和DataList不同。所以,Repeater沒有樣式方面的屬性可供設定。也就是說,如果你想格式化輸出Repeater的數據記錄,你必須使用HTML標簽來設定樣式。如,在一例中,如果我們想將雇員名字顯示成粗體,我們必須在ItemTemplate設置相應的HTML標簽:

<ItemTemplate>
<li><b><%# DataBinder.Eval(Container.DataItem, "EmployeeName")%></b></li>
</ItemTemplate>

而如果使用DataGrid或DataList,我們只通過設定ItemStyle-Font-Bold屬性為True即可實現。

Repeater在格式化設定上的欠缺,直接反映到開發時間的延長上來。對輸出數據樣式上的越多要求,就越會導致開發周期的延長。這些在模板中規定樣式的HTML標簽也越發得顯得混亂,而且,在將來頁面更改時會更加困難,特別是當一個新的開發人員接替工作時。而使用DataGrid或DataList你盡可以只設定樣式屬性,而不使用模板。而且,如果使用Visual Studio.Net或ASP.Net Web Matrix工作時,這些屬性更可以被直接設定而無需編碼。

因為Repeater開發時間的延長,其在內建功能(分頁、排序及編輯)上的支持也顯得不足。因此在可用性方面,Repeater有著明顯的缺陷。當然,<b>如果</b>用戶對於如何顯示數據無所謂的話,這也算不了什麼大問題。我之所以強調這個「如果」,是因為盡管用戶有時在設計時並不要求能夠分頁、排序或編輯記錄,但這樣的要求往往會在開發後期,或在他們能看到顯示出來的記錄後產生。

Repeater唯一優於DataGrid和DataList的特點是它的性能,尤其明顯優於DataGrid。而比DataList略高一點點。

〔結論〕

在ASP.Net頁面上顯示數據時,多數的程序員會選擇他們所熟悉的控制項來使用,特別是DataGrid。然而,這樣盲目的選擇在沒有「最好的通用控制項」的情況下是不明智的。在選擇控制項來顯示數據前,不妨問自己幾個問題來幫助決策:是否允許用戶對記錄排序?是不是記錄需要顯示在非表格的情況下?頁面是否會被高頻度地訪問,因此應多考慮性能?

DataGrid提供了最多的功能,如允許訪問者對記錄編輯、排序或分頁。同時它也是最容易使用的,甚至於簡單到只需要將之添加到頁面中而不必額外編寫代碼。不過這些易用性是以性能的損失為代價的。DataGrid在三種控制項中是效率最低的,特別是在使用Web Form的情況下。

通過使用模板,DataList提供了比DataGrid更加優秀的界面效果。不過這需要以犧牲一定的開發時間為代價。為了添加排序、分頁和編輯功能,程序員不得不花費比使用DataGrid更多的精力來進行編碼,雖然它的性能要優於DataGrid。

最後,Repeater允許對數據記錄作最大限度的HTML定製。通常,使用Repeater來顯示數據記錄比使用DataGrid和DataList要耗費更長的開發時間。另外,它不支持內建的編輯、排序和分頁功能。所幸的是,Repeater在性能上要優於其它兩種控制項,特別是明顯優於DataGrid。

閱讀全文

與哪個數據控制項可以自定義輸出相關的資料

熱點內容
海富通電子信息產業股票有哪些 瀏覽:960
網購香港的東西需要什麼程序 瀏覽:675
美團小程序如何聯系商家 瀏覽:777
資料庫版本如何進行迭代更新 瀏覽:855
淘寶怎麼不代理房產了 瀏覽:165
如何辦保險代理人 瀏覽:72
騰訊mot什麼產品好 瀏覽:786
成都舊銅交易市場在哪裡 瀏覽:239
非實時信息交流什麼意思 瀏覽:591
計算機存儲設備負責哪些數據 瀏覽:403
天線原理和微波技術基礎哪個難 瀏覽:813
戰時用什麼接收信息 瀏覽:259
家庭醫生產品如何銷售 瀏覽:304
如何查北京成交數據 瀏覽:246
物流信息多久就沒有了 瀏覽:719
wps兩列怎麼選出不一樣的數據 瀏覽:234
交易施羅德後湖人還有什麼操作 瀏覽:961
手機如何拍美容產品照片 瀏覽:77
省交易中心屬什麼機構 瀏覽:316
資料庫分類產品有哪些 瀏覽:816