資源描述:
《mschart控件使用詳解.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、一.數(shù)據(jù)源???? 說到繪制圖表,可能很多人的第一反應(yīng)除了是圖表呈現(xiàn)的方式外,更關(guān)心的便是數(shù)據(jù)如何添加,記得在很多年前,哪時(shí)要繪制一個(gè)數(shù)據(jù)曲線圖,一直找不到好的呈現(xiàn)方式,后來使用了SVG的繪圖模式,不過在添加數(shù)據(jù)的時(shí)候可謂吃盡了苦頭,畢竟,SVG只是一種描述語(yǔ)言,要?jiǎng)討B(tài)的實(shí)現(xiàn)一個(gè)圖表的繪制,是非常困難的.對(duì)于微軟的圖表控件,數(shù)據(jù)添加是一件很簡(jiǎn)單的方式,它支持多種數(shù)據(jù)添加方式,如:·?????????可以在圖表的設(shè)計(jì)界面,在屬性設(shè)置窗口中的Series屬性下的Points中添加需要的數(shù)據(jù).·????
2、?????可以在圖表的設(shè)計(jì)界面中,在屬性中綁定一個(gè)數(shù)據(jù)源.·?????????可以在后臺(tái)代碼中,動(dòng)態(tài)添加數(shù)據(jù).·?????????可以在后臺(tái)代碼中設(shè)置一個(gè)或多個(gè)數(shù)據(jù)源,直接綁定到圖表中. 在此處,我只著重講解一下第3,4兩點(diǎn).對(duì)于第3點(diǎn),相對(duì)來說比較簡(jiǎn)單,在后臺(tái)代碼中,找到要添加代碼的Series,通過它下面Points的Add、AddXY、AddY等方法,即可以實(shí)現(xiàn)數(shù)據(jù)的添加.例如:1.????doublet;2.??????????for(t=0;t<=(2.5*Math.PI);t+=Mat
3、h.PI/6)3.??????????{4.????????????doublech1=Math.Sin(t);5.????????????doublech2=Math.Sin(t-Math.PI/2);6.????????????Chart1.Series["Channel1"].Points.AddXY(t,ch1);7.????????????Chart1.Series["Channel2"].Points.AddXY(t,ch2);8.??????????}復(fù)制代碼注:代碼摘自微軟的例子,上
4、例中,Chart1為圖表的名字,Channel1、Channel2分別表示兩個(gè)Series數(shù)據(jù)序列)二.綁定數(shù)據(jù)????先來看看圖表控件都支持什么類型的數(shù)據(jù)綁定,根據(jù)官方文檔的說法,只要是實(shí)現(xiàn)了IEnumerable接口的數(shù)據(jù)類型,都可以綁定到圖表控件中,例如:DataView,DataReader,DataSet,DataRow,DataColumn,Array,List,SqlCommand,OleDbCommand,SqlDataAdapter,及OleDbDataAdapter對(duì)象。???對(duì)
5、于開發(fā)來說,最常用的還是DataView、DataReader、DataSet、DataRow、Array、List這幾種類型了,有幾點(diǎn)需要注意一下:·?????????圖表控件支持多數(shù)據(jù)源的綁定,例如:X軸綁定一個(gè)數(shù)據(jù)集ds1,Y軸可以綁定另一個(gè)數(shù)據(jù)集ds2,當(dāng)然也可以是X軸綁定到一個(gè)List數(shù)據(jù)對(duì)象,Y軸綁定到一個(gè)DataView對(duì)象等等。·?????????圖表控件的綁定方式一般有兩種,常規(guī)綁定及交差表的綁定?!?????????圖表控件的Y軸數(shù)據(jù),支持一次綁定多個(gè)值,以繪制時(shí)間、區(qū)域、使用量
6、等之類的圖形?! 〗壎〝?shù)據(jù)的流程如下:2008111015142478.png?(44.03K)2008-11-1022:19:03?大意是,綁定數(shù)據(jù)里面是否有分組數(shù)據(jù)需要綁定,如果有,則調(diào)用交叉表綁定的方法。否則判斷是否時(shí)綁定X軸和Y軸(包括標(biāo)簽、超鏈接、圖例文字等自定義屬性),如果是,則調(diào)用Points.DataBind方法進(jìn)行綁定操作。再判斷是否有不同的X軸或Y軸數(shù)據(jù),如果有,則分別調(diào)用X,Y軸的綁定方法Points.DataBindX,Points.DataBindY進(jìn)行數(shù)據(jù)綁定。最后,再判
7、斷是否需要進(jìn)行多個(gè)Y軸值的綁定。??下面分別對(duì)幾種數(shù)據(jù)綁定的方法進(jìn)行一下說明:1.綁定一張數(shù)據(jù)表? 綁定一張數(shù)據(jù)表,例如綁定一張普通的數(shù)據(jù)表,表數(shù)據(jù)如下:?2008-11-10_214947.gif?(3.24K)2008-11-1022:19:03綁定方法的代碼:1.????stringmySelectQuery="SELECTName,SalesFROMREPS;";2.????OleDbConnectionmyConnection=newOleDbConnection(myConnectio
8、nString);3.????OleDbCommandmyCommand=newOleDbCommand(mySelectQuery,myConnection);4.????myCommand.Connection.Open();5.????OleDbDataReadermyReader=myCommand.ExecuteReader(CommandBehavior.CloseConnection);6.????Chart1.DataBindTable(myReade