自定義列和區域的數據綁定
當表單被綁定到一個數據集時,表單中的列就會相繼的被分配到數據集的區域上。例如,第一個數據域分配給列A,第二個數據區域分配給列B,等等。你也可以改變分配順序,將任意域分配給任意列。
默認情況下,綁定的表單繼承數據庫中列的寬度。如果你想要設置你自己的列寬,你可以在綁定Spread控件之后設置列寬,或者將DataAutoSizeColumns屬性設置為false并設置列寬。
如 果你將多個Spread控件綁定到了一個單一的數據集,你可以將每一個Spread控件中表單的AutoGenerateColumns屬性設置為 false,這樣Spread控件就不會綁定所有的列。這時你就可以將任意一個Spread控件中的列的DataField屬性設置為某一個數據集中的域 的名字。這樣只有數據集中該列的數據被綁定了這個Spread控件。
以下示例代碼把Spread控件綁定到一個數據集,并設置在前四列中使用數據區域。
// Turn off automatic column and field mapping. |
fpSpread1.Sheets[0].AutoGenerateColumns = false; |
// Bind the component to the data set. |
fpSpread1.DataSource = dataSet1; |
// Set the fields for the columns. |
fpSpread1.Sheets[0].Columns[0].DataField = "Description"; |
fpSpread1.Sheets[0].Columns[1].DataField = "ID"; |
fpSpread1.Sheets[0].Columns[2].DataField = "LeadTime"; |
fpSpread1.Sheets[0].Columns[3].DataField = "Price"; |
添加行或列到已綁定的表單
把未綁定的行添加到已綁定的表單中
當你將表單綁定到一個數據集時,你可能想要添加一個未綁定的行保存一些額外的數據。
下面的圖表中展示了某個Spread控件中的一個表單,它的數據來自一個數據集;表單的底端有一行未綁定的行,計算表單中數據的平均值。

下面的示例代碼把Spread控件綁定到了一個數據集,并添加了一個未綁定行:
// Bind the component to the data set. |
fpSpread1.DataSource = dbDataSet; |
fpSpread1.Sheets[0].AddUnboundRows(20, 1); |
把一個未綁定列添加到一個綁定表單中
當你將表單綁定到一個數據集時,你可能想要添加一個未綁定的列保存一些額外的數據。
下面的圖表中展示了某個Spread控件中的一個表單,它的數據來自一個數據集;表單的底端有一行未綁定的行,計算了表單中數據的平均值。

下面的示例代碼把Spread控件綁定到一個數據集,并添加了一個未綁定行:
// Bind the component to the data set. |
fpSpread1.DataSource = dbDataSet; |
fpSpread1.Sheets[0].AddUnboundRows(20, 1); |
將Spread的單元格區域綁定到外部數據源
你可以將Spread控件中一定范圍內的單元格綁定到外部的數據源上。為了達到這個目的,你可以使用SpreadDataBindingAdpater類在Spread控件和數據源之間創建一個連接,并使用MapperInfo類把單元格區域與數據源中的區域匹配起來。

綁定單元格區域之后,如果你在數據源中刪除或增加了一列,Spread控件并不會自動進行更新。
Spread控件中的數據源和單元格區域是由MapperInfo類控制的。它們之間通過行同步進行相互同步。如果用戶在單元格區域中添加或者刪除 了任意行,這將會影響到數據源中的數據,反之亦然。如果用戶在現有的單元格區域下面添加了新的一行,那么單元格區域會擴展一行,并對MapperInfo 類和數據源進行擴展,反之亦然。如果新添加的行位于綁定區域的外面,那么它不會被添加到綁定區域中。
默認情況下,Spread控件會嘗試將外部數據源中的數據類型與它所包含的單元格類型進行匹配。你可以將DataAutoCellTypes屬性設置為false來阻止以上的默認行為。下面的表格展示了我們所使用的基于數據類型的單元格類型:
數據類型 |
單元格類型 |
布爾值 |
復選單元格 |
日期時間 |
日期時間單元格 |
雙精度浮點值,單精度浮點值,十進制值 |
數值單元格 |
16位整型,32位整型,等等。 |
數據單元格 |
字符串 |
文本單元格 |
其它 |
通用單元格 |
想要了解更多信息,請參考API參考資料中的SpreadDataBindingAdapter類以及MapperInfo類。
下面的示例代碼將一個單一的單元格區域綁定到一個數據源上:
FarPoint.Win.Spread.Data.SpreadDataBindingAdapter data = new FarPoint.Win.Spread.Data.SpreadDataBindingAdapter(); |
data.SheetName = "Sheet1"; |
data.MapperInfo = new FarPoint.Win.Spread.Data.MapperInfo(3, 2, 1, 1); |
data.FillSpreadDataByDataSource(); |
將Spread中的單元格區域作為外部控件的數據源
你可以將Spread控件中一定范圍內的單元格綁定到外部的數據源上。為了達到這個目的,你可以使用SpreadDataBindingAdpater類在Spread控件和數據源之間創建一個連接,并使用MapperInfo類把單元格區域與數據源中的區域匹配起來。

綁定單元格區域之后,如果你在數據源中刪除或增加了一列,Spread控件并不會自動進行更新。
Spread控件中的數據源和單元格區域是由MapperInfo類控制的。它們之間通過行同步進行相互同步。如果用戶在單元格區域中添加或者刪除 了任意行,這將會影響到數據源中的數據,反之亦然。如果用戶在現有的單元格區域下面添加了新的一行,那么單元格區域會擴展一行,并對MapperInfo 類和數據源進行擴展,反之亦然。如果新添加的行位于綁定區域的外面,那么它不會被添加到綁定區域中。
默認情況下,Spread控件會嘗試將外部數據源中的數據類型與它所包含的單元格類型進行匹配。你可以將DataAutoCellTypes屬性設置為false來阻止以上的默認行為。下面的表格展示了我們所使用的基于數據類型的單元格類型:
數據類型 |
單元格類型 |
布爾值 |
復選單元格 |
日期時間 |
日期時間單元格 |
雙精度浮點值,單精度浮點值,十進制值 |
數值單元格 |
16位整型,32位整型,等等。 |
數據單元格 |
字符串 |
文本單元格 |
其它 |
通用單元格 |
想要了解更多信息,請參考API參考資料中的SpreadDataBindingAdapter類以及MapperInfo類。
下面的示例代碼將一個單一的單元格區域綁定到一個數據源上。
FarPoint.Win.Spread.Data.SpreadDataBindingAdapter data = new FarPoint.Win.Spread.Data.SpreadDataBindingAdapter(); |
data.SheetName = "Sheet1"; |
data.MapperInfo = new FarPoint.Win.Spread.Data.MapperInfo(3, 2, 1, 1); |
data.FillSpreadDataByDataSource(); |
使用層次化的數據顯示
表單能夠以層次化的視圖顯示 與其相關的數據,如相關數據庫中的數據。下面是一個使用層次化視圖顯示數據庫中數據的示例,其中的數據庫引用了指導手冊中的數據庫。用戶可以通過點擊展開和折疊圖表(加號和減號標識)展開或者折疊層次組織的層級。

想要以層次化的方式顯示數據,首先需要創建一個數據集用來保存相關的數據;然后定義數據之間的相互關系; 最后設置Spread控件,以你想要的方式顯示數據。你可以自定義單元格類型,顏色,標題,以及子表單的其它方面的外觀設置。
你可以綁定到一個層次化的集合上。
如果你要為表單設置皮膚,你必須把皮膚應用到父表單和所有的子表單上。
你可以設置層次結構的顯示方式,Spread會將其當做父表單的子視圖。使用SheetView類的屬性,你可以獲取更多有關子視圖的信息。
- ChildRelationCount
- GetChildDataModel
- GetChildRelation
- GetChildSheets
- GetChildView
- GetChildVisible
- ParentRelationName
當最終用戶展開或者折疊子表單時,你能夠捕捉到這個事件。想要了解更多信息,請參考 Expand 事件和ChildViewCreated事件。你可以使用GetRowExpandable和 SetRowExpandable方法決定行是否是展開的。
如果你需要設置子表單的屬性,最好是在ChildWorkbookCreated事件中放置這些修改屬性的代碼。當創建一個新的子表單時,該事件就 會被觸發。ChildViewCreated事件是在子表單創建后被觸發的,但子表單直到最后才被創建好,并且只有子表單在控件中可見時它會被創建(這樣 布局的計算才會更快)。
下面的示例代碼將Spread控件綁定到一個級聯集合上。
private string classname; |
get { return classname; } |
set { classname = value; } |
private ArrayList score = new ArrayList(); |
private void Form1_Load(object sender, System.EventArgs e) |
ArrayList list = new ArrayList(); |
Student s = new Student(); |
sc.ClassName = "English"; |
sc.ClassName = "English"; |
fpSpread1_Sheet1.DataSource = list; |
標簽:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園