文章譯自在工作過程中遇到的實際問題,而查的msdn,當時沒有找到中文資料,網上關于此方面的實用的資料也不多,有心收集下來并翻譯,在此與大家交流,歡迎批評指正:[email protected]
內容——
序言:windows窗體&web窗體中的datagrid控件
①.控制列的寬度、高度和對齊方式。
②.制定列的顯示和編輯模式外觀。
③.格式化日期、貨幣和其它數據。
④.動態顯示和隱藏列。
⑤.動態增加列。
⑥.用datagrid控件向數據源添加一條記錄。
⑦.在編輯模式下顯示一個下拉列表。
⑧.用checkbox選擇多個items.
⑨.一次編輯多行。
⑩.單擊任何地方選中該行。
簡介
datagrid服務器控制是從數據源顯示信息的強有力的工具,使用簡單。你可以只通過設定一些屬性就可以顯示可編輯的數據,并且使其具有專業的外觀,同時,它還具有非常復雜的對象模型,為你展示數據提供了很大的靈活性。
這篇文章重點講解了在newsgroup網絡和其它的開發人員的論壇里經常問到的關于制定datagrid的顯示的問題。這里所討論的有些問題是很簡單的,但有時也有些令人迷惑,在這種情況下,他們提出了這一問題——如何掌握datagrid控件的基本功能。
文章假設你已經熟悉該控件——怎樣將它添加到一個窗體以及如何設置它來顯示數據。你還要知道怎樣將它的一行變成可編輯模式和其它的基本任務。最終,你將會發現掌握如何使用模板——向datagrid中添加模板列以及在模板中展示控件——是十分有幫助的。
序言:windows窗體&web窗體中的datagrid控件。
web窗體中的datagrid控件并不是windows窗體中該控件的等價物,通常認為它們是同一種控件,至少具有相同的功能。但是,web窗體的整個編程paradigm和windows窗體有著很大的不同,舉個例子來說,web窗體頁面的每一次處理過程都要回傳到服務器,它們必須維護狀態,而且具有非常不同的數據綁定模型,如此等等。
正是由于這些不同,使得它們在各自的控件方面也有著很大的差異,包括
datagrid控件,一般來說,web窗體datagrid控件的內置屬性要少一些,下面列出了幾個不同之處:
①.不繼承支持主——從數據結構。
②.和其它web服務器控件一樣,它不支持雙向的數據綁定。如果你想更新數據,必須要自己寫代碼。
③.一次只能編輯一行。
④.并不繼承性也支持排序,盡管你可以通過處理它激發的事件來對網格的內容排序。
另一方面:
①.你可以將web窗體datagrid控件綁定到任何支持ienumerable接口的對象上。
②.web窗體datagrid控件支持分頁。
③.與windows窗體datagrid相比,我們更容易規范web窗體datagrid的外觀和數據的輸出。
一.控制列寬度、高度和對齊公式。
默認情況下,datagrid控件自動調整行和列,使它們適應你指定給它的全部
的高度和寬度。在全部寬度內,它根據列頭的文本來控制列的寬度。所有數據默
認都是左對齊的。
為控制列的特性,應該關閉“自動生成列”屬性——將autogeneratecolumns屬性置為false.在實際的使用中,只有在短期應用,如快速瀏覽頁面或者演示的時候,才將該屬性設為true.對于生成應用程序而言,你應該默認添加列,每個列可以是綁定列或者模板列。
為了控制某個列的寬度,可以為該列產生一個樣式元素(style-element)然后
將元素的寬度屬性設為標準單位,下面給出了一個項樣式的width屬性設置
的html代碼:
將元素的寬度屬性設為標準單位,下面給出了一個項樣式的width屬性設置
的html代碼:
<asp: boundcolumn datafield=”title”sortexpression=”title”
<asp: boundcolumn datafield=”title”sortexpression=”title”
header text=”title”>
<itemstyle width=”100px”></itemstyle>
</asp:boundcolumn>
注:可以將itemstyle-width=”100px”寫入boundolumn中。
你可以使用樣式元素設置對齊方式,將其設為“左”、“右”或者其它在“水平對齊”集合中定義的值(在vs中,每個單獨的列對齊方式是可見的)
下面是一個例子:
<asp: boundcolumn datafield=”title” sortexpression=”title”
headertext=”title”>
<itemstyle width=”100px”horizontalalign=”right”></itemstyle>
</asp:boundcolumn>
你還可以使用樣式元素設定列的高度,你很可能會覺得這沒有設定寬度靈活,因為設定某一列的高度也就設定了全部列的高度。
你也可以在運行時通過代碼設定寬度,采取這種方式的一個例子就是itemgreated事件句柄,下面的例子將前兩列分別設定為100和50像素。
//c#
private void datagrid-itemcreated(object sender,
system.web.ui.webcontrols.datagriditemeventargs e)
{
e.item.cells[0]width=new unit(100);
e.item.cells[1].width=new unit(50);
}
當然,將這些可以在設計時就設置好的寬度值通過代碼來設置幾乎沒有任何意義。一般情況下,你可能只是想要基于運行時的值來設定寬度而采取這種方法,你可以將單元格控件的寬度設為標準的單位(往往是像素)。但是,它并不直接將這些長度數據轉化為像素——這些僅僅是字符數。然而,當你創建一個項的時候,可以使用這些數據來檢查。
(unfinished)
③.與windows窗體datagrid相比,我們更容易規范web窗體datagrid的外觀和數據的輸出。
一.控制列寬度、高度和對齊公式。
默認情況下,datagrid控件自動調整行和列,使它們適應你指定給它的全部
的高度和寬度。在全部寬度內,它根據列頭的文本來控制列的寬度。所有數據默
認都是左對齊的。
為控制列的特性,應該關閉“自動生成列”屬性——將autogeneratecolumns屬性置為false.在實際的使用中,只有在短期應用,如快速瀏覽頁面或者演示的時候,才將該屬性設為true.對于生成應用程序而言,你應該默認添加列,每個列可以是綁定列或者模板列。
為了控制某個列的寬度,可以為該列產生一個樣式元素(style-element)然后
將元素的寬度屬性設為標準單位,下面給出了一個項樣式的width屬性設置
的html代碼:
將元素的寬度屬性設為標準單位,下面給出了一個項樣式的width屬性設置
的html代碼:
<asp: boundcolumn datafield=”title”sortexpression=”title”
<asp: boundcolumn datafield=”title”sortexpression=”title”
header text=”title”>
<itemstyle width=”100px”></itemstyle>
</asp:boundcolumn>
注:可以將itemstyle-width=”100px”寫入boundolumn中。
你可以使用樣式元素設置對齊方式,將其設為“左”、“右”或者其它在“水平對齊”集合中定義的值(在vs中,每個單獨的列對齊方式是可見的)
下面是一個例子:
<asp: boundcolumn datafield=”title” sortexpression=”title”
headertext=”title”>
<itemstyle width=”100px”horizontalalign=”right”></itemstyle>
</asp:boundcolumn>
你還可以使用樣式元素設定列的高度,你很可能會覺得這沒有設定寬度靈活,因為設定某一列的高度也就設定了全部列的高度。
你也可以在運行時通過代碼設定寬度,采取這種方式的一個例子就是itemgreated事件句柄,下面的例子將前兩列分別設定為100和50像素。
//c#
private void datagrid-itemcreated(object sender,
system.web.ui.webcontrols.datagriditemeventargs e)
{
e.item.cells[0]width=new unit(100);
e.item.cells[1].width=new unit(50);
}
當然,將這些可以在設計時就設置好的寬度值通過代碼來設置幾乎沒有任何意義。一般情況下,你可能只是想要基于運行時的值來設定寬度而采取這種方法,你可以將單元格控件的寬度設為標準的單位(往往是像素)。但是,它并不直接將這些長度數據轉化為像素——這些僅僅是字符數。然而,當你創建一個項的時候,可以使用這些數據來檢查。
(unfinished)
③.與windows窗體datagrid相比,我們更容易規范web窗體datagrid的外觀和數據的輸出。
一.控制列寬度、高度和對齊公式。
默認情況下,datagrid控件自動調整行和列,使它們適應你指定給它的全部
的高度和寬度。在全部寬度內,它根據列頭的文本來控制列的寬度。所有數據默
認都是左對齊的。
為控制列的特性,應該關閉“自動生成列”屬性——將autogeneratecolumns屬性置為false.在實際的使用中,只有在短期應用,如快速瀏覽頁面或者演示的時候,才將該屬性設為true.對于生成應用程序而言,你應該默認添加列,每個列可以是綁定列或者模板列。
為了控制某個列的寬度,可以為該列產生一個樣式元素(style-element)然后
將元素的寬度屬性設為標準單位,下面給出了一個項樣式的width屬性設置
的html代碼:
將元素的寬度屬性設為標準單位,下面給出了一個項樣式的width屬性設置
的html代碼:
<asp: boundcolumn datafield=”title”sortexpression=”title”
<asp: boundcolumn datafield=”title”sortexpression=”title”
header text=”title”>
<itemstyle width=”100px”></itemstyle>
</asp:boundcolumn>
注:可以將itemstyle-width=”100px”寫入boundolumn中。
你可以使用樣式元素設置對齊方式,將其設為“左”、“右”或者其它在“水平對齊”集合中定義的值(在vs中,每個單獨的列對齊方式是可見的)
下面是一個例子:
<asp: boundcolumn datafield=”title” sortexpression=”title”
headertext=”title”>
<itemstyle width=”100px”horizontalalign=”right”></itemstyle>
</asp:boundcolumn>
你還可以使用樣式元素設定列的高度,你很可能會覺得這沒有設定寬度靈活,因為設定某一列的高度也就設定了全部列的高度。
你也可以在運行時通過代碼設定寬度,采取這種方式的一個例子就是itemgreated事件句柄,下面的例子將前兩列分別設定為100和50像素。
//c#
private void datagrid-itemcreated(object sender,
system.web.ui.webcontrols.datagriditemeventargs e)
{
e.item.cells[0]width=new unit(100);
e.item.cells[1].width=new unit(50);
}
當然,將這些可以在設計時就設置好的寬度值通過代碼來設置幾乎沒有任何意義。一般情況下,你可能只是想要基于運行時的值來設定寬度而采取這種方法,你可以將單元格控件的寬度設為標準的單位(往往是像素)。但是,它并不直接將這些長度數據轉化為像素——這些僅僅是字符數。然而,當你創建一個項的時候,可以使用這些數據來檢查。
(unfinished)
新聞熱點
疑難解答