自定義列和區(qū)域的數(shù)據(jù)綁定當(dāng)表單被綁定到一個數(shù)據(jù)集時,,表單中的列就會相繼的被分配到數(shù)據(jù)集的區(qū)域上,。例如,第一個數(shù)據(jù)域分配給列A,,第二個數(shù)據(jù)區(qū)域分配給列B,,等等。你也可以改變分配順序,,將任意域分配給任意列,。 默認(rèn)情況下,綁定的表單繼承數(shù)據(jù)庫中列的寬度,。如果你想要設(shè)置你自己的列寬,,你可以在綁定Spread控件之后設(shè)置列寬,或者將DataAutoSizeColumns屬性設(shè)置為false并設(shè)置列寬。 如果你將多個Spread控件綁定到了一個單一的數(shù)據(jù)集,,你可以將每一個Spread控件中表單的AutoGenerateColumns屬性設(shè)置為false,,這樣Spread控件就不會綁定所有的列。這時你就可以將任意一個Spread控件中的列的DataField屬性設(shè)置為某一個數(shù)據(jù)集中的域的名字,。這樣只有數(shù)據(jù)集中該列的數(shù)據(jù)被綁定了這個Spread控件,。 以下示例代碼把Spread控件綁定到一個數(shù)據(jù)集,并設(shè)置在前四列中使用數(shù)據(jù)區(qū)域,。
添加行或列到已綁定的表單把未綁定的行添加到已綁定的表單中 當(dāng)你將表單綁定到一個數(shù)據(jù)集時,,你可能想要添加一個未綁定的行保存一些額外的數(shù)據(jù)。 下面的圖表中展示了某個Spread控件中的一個表單,,它的數(shù)據(jù)來自一個數(shù)據(jù)集,;表單的底端有一行未綁定的行,計算表單中數(shù)據(jù)的平均值,。 下面的示例代碼把Spread控件綁定到了一個數(shù)據(jù)集,,并添加了一個未綁定行:
把一個未綁定列添加到一個綁定表單中 當(dāng)你將表單綁定到一個數(shù)據(jù)集時,你可能想要添加一個未綁定的列保存一些額外的數(shù)據(jù),。 下面的圖表中展示了某個Spread控件中的一個表單,,它的數(shù)據(jù)來自一個數(shù)據(jù)集;表單的底端有一行未綁定的行,,計算了表單中數(shù)據(jù)的平均值,。 下面的示例代碼把Spread控件綁定到一個數(shù)據(jù)集,并添加了一個未綁定列:
將Spread的單元格區(qū)域綁定到外部數(shù)據(jù)源你可以將Spread控件中一定范圍內(nèi)的單元格綁定到外部的數(shù)據(jù)源上,。為了達(dá)到這個目的,,你可以使用SpreadDataBindingAdpater類在Spread控件和數(shù)據(jù)源之間創(chuàng)建一個連接,并使用MapperInfo類把單元格區(qū)域與數(shù)據(jù)源中的區(qū)域匹配起來,。 綁定單元格區(qū)域之后,,如果你在數(shù)據(jù)源中刪除或增加了一列,Spread控件并不會自動進(jìn)行更新,。 Spread控件中的數(shù)據(jù)源和單元格區(qū)域是由MapperInfo類控制的,。它們之間通過行同步進(jìn)行相互同步。如果用戶在單元格區(qū)域中添加或者刪除了任意行,,這將會影響到數(shù)據(jù)源中的數(shù)據(jù),,反之亦然。如果用戶在現(xiàn)有的單元格區(qū)域下面添加了新的一行,,那么單元格區(qū)域會擴(kuò)展一行,,并對MapperInfo類和數(shù)據(jù)源進(jìn)行擴(kuò)展,反之亦然,。如果新添加的行位于綁定區(qū)域的外面,,那么它不會被添加到綁定區(qū)域中。 默認(rèn)情況下,Spread控件會嘗試將外部數(shù)據(jù)源中的數(shù)據(jù)類型與它所包含的單元格類型進(jìn)行匹配,。你可以將DataAutoCellTypes屬性設(shè)置為false來阻止以上的默認(rèn)行為,。下面的表格展示了我們所使用的基于數(shù)據(jù)類型的單元格類型:
想要了解更多信息,請參考API參考資料中的SpreadDataBindingAdapter類以及MapperInfo類,。 下面的示例代碼將一個單一的單元格區(qū)域綁定到一個數(shù)據(jù)源上:
將Spread中的單元格區(qū)域作為外部控件的數(shù)據(jù)源你可以將Spread控件中一定范圍內(nèi)的單元格綁定到外部的數(shù)據(jù)源上,。為了達(dá)到這個目的,你可以使用SpreadDataBindingAdpater類在Spread控件和數(shù)據(jù)源之間創(chuàng)建一個連接,,并使用MapperInfo類把單元格區(qū)域與數(shù)據(jù)源中的區(qū)域匹配起來,。 綁定單元格區(qū)域之后,如果你在數(shù)據(jù)源中刪除或增加了一列,,Spread控件并不會自動進(jìn)行更新,。 Spread控件中的數(shù)據(jù)源和單元格區(qū)域是由MapperInfo類控制的。它們之間通過行同步進(jìn)行相互同步,。如果用戶在單元格區(qū)域中添加或者刪除了任意行,,這將會影響到數(shù)據(jù)源中的數(shù)據(jù),反之亦然,。如果用戶在現(xiàn)有的單元格區(qū)域下面添加了新的一行,,那么單元格區(qū)域會擴(kuò)展一行,并對MapperInfo類和數(shù)據(jù)源進(jìn)行擴(kuò)展,,反之亦然,。如果新添加的行位于綁定區(qū)域的外面,那么它不會被添加到綁定區(qū)域中,。 默認(rèn)情況下,,Spread控件會嘗試將外部數(shù)據(jù)源中的數(shù)據(jù)類型與它所包含的單元格類型進(jìn)行匹配。你可以將DataAutoCellTypes屬性設(shè)置為false來阻止以上的默認(rèn)行為,。下面的表格展示了我們所使用的基于數(shù)據(jù)類型的單元格類型:
想要了解更多信息,,請參考API參考資料中的SpreadDataBindingAdapter類以及MapperInfo類,。 下面的示例代碼將一個單一的單元格區(qū)域綁定到一個數(shù)據(jù)源上。
使用層次化的數(shù)據(jù)顯示表單能夠以層次化的視圖顯示 與其相關(guān)的數(shù)據(jù),如相關(guān)數(shù)據(jù)庫中的數(shù)據(jù),。下面是一個使用層次化視圖顯示數(shù)據(jù)庫中數(shù)據(jù)的示例,,其中的數(shù)據(jù)庫引用了指導(dǎo)手冊中的數(shù)據(jù)庫。用戶可以通過點擊展開和折疊圖表(加號和減號標(biāo)識)展開或者折疊層次組織的層級,。 想要以層次化的方式顯示數(shù)據(jù),,首先需要創(chuàng)建一個數(shù)據(jù)集用來保存相關(guān)的數(shù)據(jù);然后定義數(shù)據(jù)之間的相互關(guān)系,; 最后設(shè)置Spread控件,,以你想要的方式顯示數(shù)據(jù)。你可以自定義單元格類型,,顏色,,標(biāo)題,以及子表單的其它方面的外觀設(shè)置,。 你可以綁定到一個層次化的集合上,。 如果你要為表單設(shè)置皮膚,你必須把皮膚應(yīng)用到父表單和所有的子表單上,。 你可以設(shè)置層次結(jié)構(gòu)的顯示方式,,Spread會將其當(dāng)做父表單的子視圖。使用SheetView類的屬性,,你可以獲取更多有關(guān)子視圖的信息,。
當(dāng)最終用戶展開或者折疊子表單時,你能夠捕捉到這個事件,。想要了解更多信息,,請參考 Expand 事件和ChildViewCreated事件。你可以使用GetRowExpandable和 SetRowExpandable方法決定行是否是展開的,。 如果你需要設(shè)置子表單的屬性,,最好是在ChildWorkbookCreated事件中放置這些修改屬性的代碼。當(dāng)創(chuàng)建一個新的子表單時,,該事件就會被觸發(fā),。ChildViewCreated事件是在子表單創(chuàng)建后被觸發(fā)的,但子表單直到最后才被創(chuàng)建好,,并且只有子表單在控件中可見時它會被創(chuàng)建(這樣布局的計算才會更快),。 下面的示例代碼將Spread控件綁定到一個級聯(lián)集合上。
Spread for Windows Forms 5.0 中文版下載地址 附:Spread for Windows Forms高級主題系列文章 Spread for Windows Forms高級主題(1)---底層模型 Spread for Windows Forms高級主題(2)---理解單元格類型 Spread for Windows Forms高級主題(3)---理解單元格的編輯模式 Spread for Windows Forms高級主題(4)---自定義用戶交互 |
|