久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Spread for Windows Forms高級主題(6)

 心靈窗畔 2015-05-30

自定義列和區(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ū)域,。


// 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";

添加行或列到已綁定的表單


把未綁定的行添加到已綁定的表單中


當(dāng)你將表單綁定到一個數(shù)據(jù)集時,,你可能想要添加一個未綁定的行保存一些額外的數(shù)據(jù)。


下面的圖表中展示了某個Spread控件中的一個表單,,它的數(shù)據(jù)來自一個數(shù)據(jù)集,;表單的底端有一行未綁定的行,計算表單中數(shù)據(jù)的平均值,。


image


下面的示例代碼把Spread控件綁定到了一個數(shù)據(jù)集,,并添加了一個未綁定行:


// Bind the component to the data set.
fpSpread1.DataSource = dbDataSet;
// Add an unbound row.
fpSpread1.Sheets[0].AddUnboundRows(20, 1);

把一個未綁定列添加到一個綁定表單中


當(dāng)你將表單綁定到一個數(shù)據(jù)集時,你可能想要添加一個未綁定的列保存一些額外的數(shù)據(jù),。


下面的圖表中展示了某個Spread控件中的一個表單,,它的數(shù)據(jù)來自一個數(shù)據(jù)集;表單的底端有一行未綁定的行,,計算了表單中數(shù)據(jù)的平均值,。


image


下面的示例代碼把Spread控件綁定到一個數(shù)據(jù)集,并添加了一個未綁定列:


 


// Bind the component to the data set.
fpSpread1.DataSource = dbDataSet;
// Add an unbound row.
fpSpread1.Sheets[0].AddColumns(20, 1);

將Spread的單元格區(qū)域綁定到外部數(shù)據(jù)源


你可以將Spread控件中一定范圍內(nèi)的單元格綁定到外部的數(shù)據(jù)源上,。為了達(dá)到這個目的,,你可以使用SpreadDataBindingAdpater類在Spread控件和數(shù)據(jù)源之間創(chuàng)建一個連接,并使用MapperInfo類把單元格區(qū)域與數(shù)據(jù)源中的區(qū)域匹配起來,。


image


綁定單元格區(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ù)類型的單元格類型:


































數(shù)據(jù)類型



單元格類型



布爾值



復(fù)選單元格



日期時間



日期時間單元格



雙精度浮點值,單精度浮點值,,十進(jìn)制值



數(shù)值單元格



16位整型,,32位整型,等等,。



數(shù)據(jù)單元格



字符串



文本單元格



其它



通用單元格



想要了解更多信息,請參考API參考資料中的SpreadDataBindingAdapter類以及MapperInfo類,。


下面的示例代碼將一個單一的單元格區(qū)域綁定到一個數(shù)據(jù)源上:


FarPoint.Win.Spread.Data.SpreadDataBindingAdapter data = new FarPoint.Win.Spread.Data.SpreadDataBindingAdapter();
data.DataSource = dt;
data.Spread = fpSpread1;
data.SheetName = "Sheet1";
data.MapperInfo = new FarPoint.Win.Spread.Data.MapperInfo(3, 2, 1, 1);
data.FillSpreadDataByDataSource();

將Spread中的單元格區(qū)域作為外部控件的數(shù)據(jù)源


你可以將Spread控件中一定范圍內(nèi)的單元格綁定到外部的數(shù)據(jù)源上,。為了達(dá)到這個目的,你可以使用SpreadDataBindingAdpater類在Spread控件和數(shù)據(jù)源之間創(chuàng)建一個連接,,并使用MapperInfo類把單元格區(qū)域與數(shù)據(jù)源中的區(qū)域匹配起來,。


image


綁定單元格區(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ù)類型的單元格類型:


































數(shù)據(jù)類型



單元格類型



布爾值



復(fù)選單元格



日期時間



日期時間單元格



雙精度浮點值,,單精度浮點值,十進(jìn)制值



數(shù)值單元格



16位整型,,32位整型,,等等。



數(shù)據(jù)單元格



字符串



文本單元格



其它



通用單元格



想要了解更多信息,,請參考API參考資料中的SpreadDataBindingAdapter類以及MapperInfo類,。


下面的示例代碼將一個單一的單元格區(qū)域綁定到一個數(shù)據(jù)源上。


FarPoint.Win.Spread.Data.SpreadDataBindingAdapter data = new FarPoint.Win.Spread.Data.SpreadDataBindingAdapter();
data.DataSource = dt;
data.Spread = fpSpread1;
data.SheetName = "Sheet1";
data.MapperInfo = new FarPoint.Win.Spread.Data.MapperInfo(3, 2, 1, 1);
data.FillSpreadDataByDataSource();

使用層次化的數(shù)據(jù)顯示


表單能夠以層次化的視圖顯示 與其相關(guān)的數(shù)據(jù),如相關(guān)數(shù)據(jù)庫中的數(shù)據(jù),。下面是一個使用層次化視圖顯示數(shù)據(jù)庫中數(shù)據(jù)的示例,,其中的數(shù)據(jù)庫引用了指導(dǎo)手冊中的數(shù)據(jù)庫。用戶可以通過點擊展開和折疊圖表(加號和減號標(biāo)識)展開或者折疊層次組織的層級,。


image


想要以層次化的方式顯示數(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)子視圖的信息,。



  • ChildRelationCount

  • GetChildDataModel

  • GetChildRelation

  • GetChildSheets

  • GetChildView

  • GetChildVisible

  • ParentRelationName


當(dāng)最終用戶展開或者折疊子表單時,你能夠捕捉到這個事件,。想要了解更多信息,,請參考 Expand 事件和ChildViewCreated事件。你可以使用GetRowExpandable和 SetRowExpandable方法決定行是否是展開的,。


如果你需要設(shè)置子表單的屬性,,最好是在ChildWorkbookCreated事件中放置這些修改屬性的代碼。當(dāng)創(chuàng)建一個新的子表單時,,該事件就會被觸發(fā),。ChildViewCreated事件是在子表單創(chuàng)建后被觸發(fā)的,但子表單直到最后才被創(chuàng)建好,,并且只有子表單在控件中可見時它會被創(chuàng)建(這樣布局的計算才會更快),。


下面的示例代碼將Spread控件綁定到一個級聯(lián)集合上。


public class Score
{
private string classname;
private string grade;
public string ClassName
{
get { return classname; }
set { classname = value; }
}
public string Grade
{
get { return grade; }
set { grade = value; }
}
}
public class Student
{
private string name;
private string id;
private ArrayList score = new ArrayList();
public string Name
{
get { return name; }
set { name = value; }
}
public string Id
{
get { return id; }
set { id = value; }
}
public ArrayList Score
{
get { return score; }
}
}
private void Form1_Load(object sender, System.EventArgs e)
{
ArrayList list = new ArrayList();
Student s = new Student();
s.Name = "John Smith";
s.Id = "100001";
Score sc = new Score();
sc.ClassName = "math";
sc.Grade = "A";
s.Score.Add(sc);
sc = new Score();
sc.ClassName = "English";
sc.Grade = "A";
s.Score.Add(sc);
list.Add(s);
s = new Student();
s.Name = "David Black";
s.Id = "100002";
sc = new Score();
sc.ClassName = "math";
sc.Grade = "B";
s.Score.Add(sc);
sc = new Score();
sc.ClassName = "English";
sc.Grade = "A";
s.Score.Add(sc);
list.Add(s);
fpSpread1_Sheet1.DataSource = list;
}

 


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)---自定義用戶交互


Spread for Windows Forms高級主題(5)---數(shù)據(jù)處理

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章