版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
微軟圖表控件MsChart使用初探分類:
NET2009-09-0211:36微軟發(fā)布了.NET3.5框架下的圖表控件,基本上能想到的圖表都可以使用它繪制出來,給圖形統(tǒng)計和報表圖形顯示提供了很好的解決辦法,同時支持Web和WinForm兩種方式,不過缺點也比較明顯,只能在最新的開發(fā)環(huán)境中使用,需要.Net3.5Sp1以及VS2008的開發(fā)環(huán)境。下面是下載地址:控件:Microsoft.NETFramework3.5的Microsoft圖表控件(MicrosoftChartControlsforMicrosoft.NETFramework3.5)–包含英文版,中文版。上面提供的鏈接是中文版的,可以更改為英文版。語言包:MicrosoftChartControlsforMicrosoft.NETFramework3.5LanguagePackMicrosoft.NETFramework3.5的Microsoft圖表控件的語言包,包含23中語言。MicrosoftChartControlsAdd-onforMicrosoftVisualStudio2008
–這個只有英文的,沒找到中文的。文檔(MicrosoftChartControlsfor.NETFrameworkDocumentation)–這個只有英文的,沒找到中文的。WinForm和A的例子(SamplesEnvironmentforMicrosoftChartControls)–這個只有英文的,沒找到英文的。Demo下載:/mschart下了它的示例程序后,運行了一下,非常的強(qiáng)大,可以支持各種各樣的圖形顯示,常見的:點狀圖、餅圖、柱狀圖、曲線圖、面積圖、排列圖等等,同時也支持3D樣式的圖表顯示,不過我覺得最有用的功能還是支持圖形上各個點的屬性操作,它可以定義圖形上各個點、標(biāo)簽、圖形的提示信息(Tooltip)以及超級鏈接、Javascript動作等,而不是像其它圖形類庫僅生成一幅圖片而已,通過這些,加上微軟自己的Ajax框架,可以建立一個可以互動的圖形統(tǒng)計報表了。一。安裝
控件的安裝相對比較簡單,下載完后,先執(zhí)行“MSChart.exe”程序,它會自動檢測你的環(huán)境,安裝到系統(tǒng)目錄中去,如果要在VS2008環(huán)境中直接使用,那么需要安裝ForVs2008的插件,MSChart_VisualStudioAddOn.exe,還有一個中文語言包MSChartLP_chs.exe。安裝完后,打開Vs2008,在建立項目的時候,你就能在工具欄中看到有一個Chart的控件了,如下圖:二。使用
安裝好后,建立一個.NET3.5的Web項目,像使用普通控件一樣拖放到要使用的Web界面即可。初步研究了一下,整個圖形控件主要由以下幾個部份組成:1.Annotations--圖形注解集合2.ChartAreas--圖表區(qū)域集合3.Legends
--圖例集合4.Series--圖表序列集合(即圖表數(shù)據(jù)對象集合)5.Titles--圖標(biāo)的標(biāo)題集合Annotations注解集合
Annotations是一個對圖形的一些注解對象的集合,所謂注解對象,類似于對某個點的詳細(xì)或者批注的說明,比如,在圖片上實現(xiàn)各個節(jié)點的關(guān)鍵信息,如下圖方框和黃色的小方框:一個圖形上可以擁有多個注解對象,可以添加十多種圖形樣式的注解對象,包括常見的箭頭、云朵、矩行、圖片等等注解符號,通過各個注解對象的屬性,可以方便的設(shè)置注解對象的放置位置、呈現(xiàn)的顏色、大小、文字內(nèi)容樣式等常見的屬性。ChartAreas圖表區(qū)域集合
ChartAreas可以理解為是一個圖表的繪圖區(qū),例如,你想在一幅圖上呈現(xiàn)兩個不同屬性的內(nèi)容,一個是用戶流量,另一個則是系統(tǒng)資源占用情況,那么你要在一個圖形上繪制這兩種情況,明顯是不合理的,對于這種情況,可以建立兩個ChartArea,一個用于呈現(xiàn)用戶流量,另一個則用于呈現(xiàn)系統(tǒng)資源的占用情況。
當(dāng)然了,圖表控件并不限制你添加多少個繪圖區(qū)域,你可以根據(jù)你的需要進(jìn)行添加。對于每一個繪圖區(qū)域,你可以設(shè)置各自的屬性,如:X,Y軸屬性、背景等。需要注意的是,繪圖區(qū)域只是一個可以作圖的區(qū)域范圍,它本身并不包含要作圖形的各種屬性數(shù)據(jù)。多繪圖區(qū)效果圖如下,分為上下兩個繪圖區(qū)域,分別表示不同的繪圖數(shù)據(jù):Legends圖例集合
Legends是一個圖例的集合,即標(biāo)注圖形中各個線條或顏色的含義,同樣,一個圖片也可以包含多個圖例說明,比如像上面說的多個圖表區(qū)域的方式,則可以建立多個圖例,每別說明各個繪圖區(qū)域的信息,具體的圖例配置說明此處就不詳細(xì)說明了,可以參考一下官網(wǎng)的例子,寫得豐富的詳細(xì)了:)也上一張圖例的效果圖吧~Series圖表序列
圖表序列,應(yīng)該是整個繪圖中最關(guān)鍵的內(nèi)容了,通俗點說,即是實際的繪圖數(shù)據(jù)區(qū)域,實際呈現(xiàn)的圖形形狀,就是由此集合中的每一個圖表來構(gòu)成的,可以往集合里面添加多個圖表,每一個圖表可以有自己的繪制形狀、樣式、獨立的數(shù)據(jù)等。
需要注意的是,每一個圖表,你可以指定它的繪制區(qū)域(見ChartAreas的說明),讓此圖表呈現(xiàn)在某個繪圖區(qū)域,也可以讓幾個圖表在同一個繪圖區(qū)域疊加,如下圖:上面兩幅圖,分別表示了把圖表放在不同的繪制區(qū)域和放在同一個繪制區(qū)域的情況。
繼續(xù)回到ChartAreas章節(jié)舉的例子,同時要顯示用戶的流量還要顯示系統(tǒng)的占用情況,對于這種時候,應(yīng)該建立兩個Series,一個用于呈現(xiàn)用戶的流量,另一個則用于呈現(xiàn)系統(tǒng)的占用情況。它們分別屬于各自的繪圖區(qū)域。Titles標(biāo)題合集
根據(jù)字面含義即可以理解,是圖表的標(biāo)題配置,同樣可以添加多個標(biāo)題,以及設(shè)置標(biāo)題的樣式及文字、位置等屬性。多看一下它的屬性即能明白各自的含義。三。其它屬性
相對來說,我覺得比較有用的屬性有三個,分別是:Label、Tooltip以及Url鏈接。
Label即標(biāo)簽的含義,可以在圖片的關(guān)鍵位置進(jìn)行一些關(guān)鍵數(shù)字或文字的描述,如下圖:像上圖:X軸和Y軸的文字便是標(biāo)簽,以及圖表曲線中的紅點上的文字,也是標(biāo)簽,添加了標(biāo)簽,可以讓人更容易的對內(nèi)容進(jìn)行理解。
Tooltip即提示的含義,用于在各個關(guān)鍵點,如:標(biāo)簽、圖形關(guān)鍵點、標(biāo)題等當(dāng)鼠標(biāo)移動上去的時候,提示用戶一些相關(guān)的詳細(xì)或說明信息,例如上圖,可以給曲線中的每一個點增加Tooltip的屬性,寫上需要詳細(xì)說明的內(nèi)容,比如:詳細(xì)的銷售明細(xì),那么,在鼠標(biāo)移動到這個點的時候,會自動彈出提示信息。
Tooltip可以支持簡單方式以及自定義的方式,簡單方式即像平時Html頁面設(shè)置的title之類的屬性效果,而自定義的方式,則可以實現(xiàn)圖形、文本等各種復(fù)雜的提示信息顯示。詳細(xì)的方式請參考官方例子的:InteractivityandAJAX/Tooltips以及InteractivityandAJAX/ClientSideScripts下面的相關(guān)例子。
Url鏈接,圖表控件中,有一大半的控件都有Url及Tooltip的屬性,你可以設(shè)置此屬性,在鼠標(biāo)點擊的時候,代到其它相應(yīng)的頁面去。建議大家看看官方例子中的InteractivityandAJAX部份,很精彩:)例子:建立一個Cpu信息和內(nèi)存使用的實時統(tǒng)計表
下面寫一個小例子,建立一個系統(tǒng)的內(nèi)存實時統(tǒng)計圖表,使用到了Ajax的方法,以及WindowsApi取得系統(tǒng)內(nèi)存的方法。
首先,建立一個Aspx頁面,拖動一個圖表控件到頁面,設(shè)置圖表控件的屬性如下:
其中,MEMORY_INFO,ComputerInfo是一個定義的結(jié)構(gòu)體及調(diào)用Win32API接口的一個訪問類。程序分別取得每一個圖表對象,每次加載的時候,都重新取得當(dāng)前的內(nèi)存和Cpu信息,再在圖表上添加一個點,需要注意的是,一定要設(shè)置圖表控件的EnableViewState屬性為True,否則無法記錄狀態(tài)。Code
<asp:ChartID="ChartMemory"runat="server"BackColor="LightSteelBlue"
BackGradientStyle="TopBottom"BackSecondaryColor="White"EnableTheming="False"
EnableViewState="True"Height="363px"Width="415px">
<Legends>
<asp:LegendAlignment="Center"Docking="Bottom"Name="Legend1"Title="圖例">
</asp:Legend>
</Legends>
<Titles>
<asp:TitleFont="微軟雅黑,16pt"Name="Title1"Text="系統(tǒng)內(nèi)存監(jiān)控圖表">
</asp:Title>
</Titles>
<Series>
<asp:SeriesBorderColor="White"BorderWidth="3"ChartArea="ChartArea1"
ChartType="Spline"Legend="Legend1"Name="已使用物理內(nèi)存"XValueType="Double"
YValueType="Double">
</asp:Series>
<asp:SeriesBorderWidth="3"ChartArea="ChartArea1"ChartType="Spline"
Legend="Legend1"Name="全部占用內(nèi)存">
</asp:Series>
<asp:SeriesChartArea="ChartArea2"ChartType="StackedArea"Legend="Legend1"
Name="CPU">
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartAreaBackColor="224,224,224"BackGradientStyle="LeftRight"
Name="ChartArea1">
</asp:ChartArea>
<asp:ChartAreaName="ChartArea2">
</asp:ChartArea>
</ChartAreas>
</asp:Chart>一共建立了兩個繪圖區(qū),一個用于呈現(xiàn)內(nèi)存使用情況的在ChartArea1區(qū)域,另一個則是呈現(xiàn)Cpu使用情況的,放置在ChartArea2區(qū)域了。一共有三個圖表,分別表示已使用的物理內(nèi)存、全部占用的物理內(nèi)存,以及Cpu使用顯示的情況。添加一個Ajax的計時器以及Ajax的ScriptManager,UpdatePanel,把計時器和圖表控件都拖進(jìn)UpdatePanel里面。設(shè)置計時器的間隔時間為一秒鐘(1000),雙擊計時器,寫如下代碼:Code
staticPerformanceCounterpc=newPerformanceCounter("Processor","%ProcessorTime","_Total");
protectedvoidTimer1_Tick(objectsender,EventArgse)
{
MEMORY_INFOMemInfo=newMEMORY_INFO();
ComputerInfo.GlobalMemoryStatus(refMemInfo);
//UseMemory
Seriesseries=ChartMemory.Series[0];
intxCount=series.Points.Count==0?0:series.Points.Count-1;
doublelastXValue=series.Points.Count==0?1:series.Points[xCount].XValue+1;
doublelastYValue=(double)(MemInfo.dwTotalPhys-MemInfo.dwAvailPhys)/1024/1024;
series.Points.AddXY(lastXValue,lastYValue);
//TotalMemory
series=ChartMemory.Series[1];
lastYValue=(double)(MemInfo.dwTotalVirtual+MemInfo.dwTotalPhys-MemInfo.dwAvailPhys-MemInfo.dwAvailVirtual)/1024/1024;
series.Points.AddXY(lastXValue,lastYValue);
//CPU
series=ChartMemory.Series[2];
lastYValue=(double)pc.NextValue();
series.Points.AddXY(lastXValue,lastYValue);
//Removepointsfromtheleftchartsideifnumberofpointsexceeds100.
while(this.ChartMemory.Series[0].Points.Count>80)
{
//Removeseriespoints
foreach(Seriessinthis.ChartMemory.Series)
{
s.Points.RemoveAt(0);
}
}
//Adjustcategoricalscale
doubleaxisMinimum=this.ChartMemory.Series[0].Points[0].XValue;
this.ChartMemory.ChartAreas[0].AxisX.Minimum=axisMinimum;
this.ChartMemory.ChartAreas[0].AxisX.Maximum=axisMinimum+99;
}
附上取得內(nèi)存信息的類代碼:Code
///<summary>
///取得計算機(jī)的系統(tǒng)信息
///</summary>
publicclassComputerInfo
{
///<summary>
///取得Windows的目錄
///</summary>
///<paramname="WinDir"></param>
///<paramname="count"></param>
[DllImport("kernel32")]
publicstaticexternvoidGetWindowsDirectory(StringBuilderWinDir,intcount);
///<summary>
///獲取系統(tǒng)路徑
///</summary>
///<paramname="SysDir"></param>
///<paramname="count"></param>
[DllImport("kernel32")]
publicstaticexternvoidGetSystemDirectory(StringBuilderSysDir,intcount);
///<summary>
///取得CPU信息
///</summary>
///<paramname="cpuinfo"></param>
[DllImport("kernel32")]
publicstaticexternvoidGetSystemInfo(refCPU_INFOcpuinfo);
///<summary>
///取得內(nèi)存狀態(tài)
///</summary>
///<paramname="meminfo"></param>
[DllImport("kernel32")]
publicstaticexternvoidGlobalMemoryStatus(refMEMORY_INFOmeminfo);
///<summary>
///取得系統(tǒng)時間
///</summary>
///<paramname="stinfo"></param>
[DllImport("kernel32")]
publicstaticexternvoidGetSystemTime(refSYSTEMTIME_INFOstinfo);
publicComputerInfo()
{
}
}
//定義CPU的信息結(jié)構(gòu)
[StructLayout(LayoutKind.Sequential)]
publicstructCPU_INFO
{
publicuintdwOemId;
publicuintdwPageSize;
publicuintlpMinimumApplicationAddress;
publicuintlpMaximumApplicationAddress;
publicuintdwActiveProcessorMask;
publicuintdwNumberOfProcessors;
publicuintdwProcessorType;
publicuintdwAllocationGranularity;
publicuintdwProcessorLevel;
publicuintdwProcessorRevision;
}
//定義內(nèi)存的信息結(jié)構(gòu)
[StructLayout(LayoutKind.Sequential)]
publicstructMEMORY_INFO
{
publicuintdwLength;
publicuintdwMemoryLoad;
publicuintdwTotalPhys;
publicuintdwAvailPhys;
publicuintdwTotalPageFile;
publicuintdwAvailPageFile;
publicuintdwTotalVirtual;
publicuintdwAvailVirtual;
}
//定義系統(tǒng)時間的信息結(jié)構(gòu)
[StructLayout(LayoutKind.Sequential)]
publicstructSYSTEMTIME_INFO
{
publicushortwYear;
publicushortwMonth;
publicushortwDayOfWeek;
publicushortwDay;
publicushortwHour;
publicushortwMinute;
publicushortwSecond;
publicushortwMilliseconds;
}
運行的效果圖如下:vs2008開發(fā)3D報表-MSChart學(xué)習(xí)幫助-開發(fā)日志(一)標(biāo)簽:
vs2008
報表
圖形報表
3D報表
分類:
NET2009-09-0209:47首先看到這個報表的界面會不會感覺很爽,沒錯,這就是用MSchart的圖形報表組件,完全免費的開發(fā)的如果你不看這篇文章,可能會碰很多釘子,寫這個就是為了讓大家更快,更順利的去使用這個.netFrameWork3.5新組件的功能先發(fā)表了,繼續(xù)修改,免得又出現(xiàn)關(guān)閉瀏覽器問題...繼續(xù)
首先你要安裝Vs2008這我就不說了,.netFrameWork3.5這也是要有的,然后下載MSChart的和4個補丁文件,在這里我都給大家提供好了,在我的資源里就有下載,5分哦,不過下載完評論下就不扣分了。--=====================================================================--然后依次安裝dotnetfx35setup.exeMSChart_VisualStudioAddOn.exeMSChartLP_chs.exeMSChart.exe這幾個文件,然后OK啟動VS2008準(zhǔn)備寫程序--=====================================================================--創(chuàng)建一個Web項目然后在左邊的工具卡里添加.netFrameWork組件
Chart
這里添加WebUI的Chart組件如果時WinForm的話就添加WinForm的然后在數(shù)據(jù)的選項卡里,把Chart的控件拖到界面上
--=====================================================================--HTML代碼如下<asp:chartid="Chart1"runat="server"Height="296px"Width="412px"ImageLocation="~/TempImages/ChartPic_#SEQ(300,3)"Palette="BrightPastel"imagetype="Png"BorderDashStyle="Solid"BackSecondaryColor="White"BackGradientStyle="TopBottom"BorderWidth="2"backcolor="#D3DFF0"BorderColor="26,59,105">
<legends>
<asp:LegendIsTextAutoFit="False"Name="Default"BackColor="Transparent"Font="TrebuchetMS,8.25pt,style=Bold"></asp:Legend>
</legends>
<borderskinskinstyle="Emboss"></borderskin>
<series>
<asp:SeriesName="Column"BorderColor="180,26,59,105">
<points>
<asp:DataPointYValues="45"/>
<asp:DataPointYValues="34"/>
<asp:DataPointYValues="67"/>
<asp:DataPointYValues="31"/>
<asp:DataPointYValues="27"/>
<asp:DataPointYValues="87"/>
<asp:DataPointYValues="45"/>
<asp:DataPointYValues="32"/>
</points>
</asp:Series>
</series>
<chartareas>
<asp:ChartAreaName="ChartArea1"BorderColor="64,64,64,64"BorderDashStyle="Solid"BackSecondaryColor="White"BackColor="64,165,191,228"ShadowColor="Transparent"BackGradientStyle="TopBottom">
<area3dstyleRotation="10"perspective="10"Inclination="15"IsRightAngleAxes="False"wallwidth="0"IsClustered="False"></area3dstyle>
<axisylinecolor="64,64,64,64">
<labelstylefont="TrebuchetMS,8.25pt,style=Bold"/>
<majorgridlinecolor="64,64,64,64"/>
</axisy>
<axisxlinecolor="64,64,64,64">
<labelstylefont="TrebuchetMS,8.25pt,style=Bold"/>
<majorgridlinecolor="64,64,64,64"/>
</axisx>
</asp:ChartArea>
</chartareas>
</asp:chart>--=====================================================================--后臺代碼如下usingSystem;
usingSystem.Collections;
usingSystem.Configuration;
usingSystem.Data;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.HtmlControls;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Xml.Linq;
usingSystem.Web.UI.DataVisualization.Charting;
namespaceWebApplication2
{
publicpartialclass_Default:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
//Createnewdataseriesandsetit'svisualattributes
Seriesseries=newSeries("Spline");
series.ChartType=SeriesChartType.Spline;
series.BorderWidth=3;
series.ShadowOffset=2;
//Populatenewserieswithdata
series.Points.AddY(67);
series.Points.AddY(57);
series.Points.AddY(83);
series.Points.AddY(23);
series.Points.AddY(70);
series.Points.AddY(60);
series.Points.AddY(90);
series.Points.AddY(20);
//Addseriesintothechart'sseriescollection
Chart1.Series.Add(series);
}
}
}
ok,你可以按F5運行了--=====================================================================--是不是報錯了?哈哈,當(dāng)然要報錯還要配置Web.Config開個玩笑:)Web.Config還要配置如下<appSettings>
<addkey="ChartImageHandler"value="Storage=file;Timeout=20;Url=~/tempImages/;"/>
</appSettings>
<httpHandlers>
<removeverb="*"path="*.asmx"/>
<addverb="*"path="*.asmx"validate="false"type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions,Version=,Culture=neutral,PublicKeyToken=31BF3856AD364E35"/>
<addverb="*"path="*_AppService.axd"validate="false"type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions,Version=,Culture=neutral,PublicKeyToken=31BF3856AD364E35"/>
<addverb="GET,HEAD"path="ScriptResource.axd"type="System.Web.Handlers.ScriptResourceHandler,System.Web.Extensions,Version=,Culture=neutral,PublicKeyToken=31BF3856AD364E35"validate="false"/>
<addpath="ChartImg.axd"verb="GET,HEAD"type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,System.Web.DataVisualization,Version=,Culture=neutral,PublicKeyToken=31bf3856ad364e35"validate="false"/>
</httpHandlers>
<handlers>
<removename="ChartImageHandler"/>
<addname="ChartImageHandler"preCondition="integratedMode"verb="GET,HEAD"path="ChartImg.axd"type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,System.Web.DataVisualization,Version=,Culture=neutral,PublicKeyToken=31bf3856ad364e35"/>
</handlers>
ok,再次運行,你會看到你喜歡看到的東西了微軟圖表控件MsChart使用初探--數(shù)據(jù)綁定(交叉表)標(biāo)簽:
series
綁定
chart
myreader
label
分類:
NET2009-09-0414:54本來在考慮是否繼續(xù)寫圖表控件的使用文章,畢竟,微軟自帶的例子已經(jīng)非常詳細(xì)了,花點時間參考一下基本上可以了解用法和使用特性,不過后來想想,還是寫一下咯,抽出其中大家關(guān)心的內(nèi)容,寫出其中常用的使用方法,可以省去大家的時間,在需要深入的時候再去詳細(xì)查看例子,也當(dāng)是學(xué)習(xí)筆記吧:)(BTW:我也是邊學(xué)習(xí)邊寫的,因此,寫的文章中難免有不足或失誤的地方,希望各位朋友指正出來咯,大家一起提高~本文中基本上只會寫出最簡單常用的功能,復(fù)雜的數(shù)據(jù)操作請參考微軟詳細(xì)的例程)
一.數(shù)據(jù)源
說到繪制圖表,可能很多人的第一反應(yīng)除了是圖表呈現(xiàn)的方式外,更關(guān)心的便是數(shù)據(jù)如何添加,記得在很多年前,哪時要繪制一個數(shù)據(jù)曲線圖,一直找不到好的呈現(xiàn)方式,后來使用了SVG的繪圖模式,不過在添加數(shù)據(jù)的時候可謂吃盡了苦頭,畢竟,SVG只是一種描述語言,要動態(tài)的實現(xiàn)一個圖表的繪制,是非常困難的.對于微軟的圖表控件,數(shù)據(jù)添加是一件很簡單的方式,它支持多種數(shù)據(jù)添加方式,如:可以在圖表的設(shè)計界面,在屬性設(shè)置窗口中的Series屬性下的Points中添加需要的數(shù)據(jù).可以在圖表的設(shè)計界面中,在屬性中綁定一個數(shù)據(jù)源.可以在后臺代碼中,動態(tài)添加數(shù)據(jù).可以在后臺代碼中設(shè)置一個或多個數(shù)據(jù)源,直接綁定到圖表中.在此處,我只著重講解一下第3,4兩點.對于第3點,相對來說比較簡單,在后臺代碼中,找到要添加代碼的Series,通過它下面Points的Add、AddXY、AddY等方法,即可以實現(xiàn)數(shù)據(jù)的添加.例如:doublet;
for(t=0;t<=(2.5*Math.PI);t+=Math.PI/6)
{
doublech1=Math.Sin(t);
doublech2=Math.Sin(t-Math.PI/2);
Chart1.Series["Channel1"].Points.AddXY(t,ch1);
Chart1.Series["Channel2"].Points.AddXY(t,ch2);
}(注:代碼摘自微軟的例子,上例中,Chart1為圖表的名字,Channel1、Channel2分別表示兩個Series數(shù)據(jù)序列)
二.綁定數(shù)據(jù)
先來看看圖表控件都支持什么類型的數(shù)據(jù)綁定,根據(jù)官方文檔的說法,只要是實現(xiàn)了IEnumerable接口的數(shù)據(jù)類型,都可以綁定到圖表控件中,例如:DataView,DataReader,DataSet,DataRow,DataColumn,Array,List,SqlCommand,OleDbCommand,SqlDataAdapter,及OleDbDataAdapter對象。
對于開發(fā)來說,最常用的還是DataView、DataReader、DataSet、DataRow、Array、List這幾種類型了,有幾點需要注意一下:圖表控件支持多數(shù)據(jù)源的綁定,例如:X軸綁定一個數(shù)據(jù)集ds1,Y軸可以綁定另一個數(shù)據(jù)集ds2,當(dāng)然也可以是X軸綁定到一個List數(shù)據(jù)對象,Y軸綁定到一個DataView對象等等。圖表控件的綁定方式一般有兩種,常規(guī)綁定及交差表的綁定。圖表控件的Y軸數(shù)據(jù),支持一次綁定多個值,以繪制時間、區(qū)域、使用量等之類的圖形。
綁定數(shù)據(jù)的流程如下:
大意是,綁定數(shù)據(jù)里面是否有分組數(shù)據(jù)需要綁定,如果有,則調(diào)用交叉表綁定的方法。否則判斷是否時綁定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ù)綁定。最后,再判斷是否需要進(jìn)行多個Y軸值的綁定。
下面分別對幾種數(shù)據(jù)綁定的方法進(jìn)行一下說明:
1.綁定一張數(shù)據(jù)表
綁定一張數(shù)據(jù)表,例如綁定一張普通的數(shù)據(jù)表,表數(shù)據(jù)如下:
綁定方法的代碼:stringmySelectQuery="SELECTName,SalesFROMREPS;";OleDbConnectionmyConnection=newOleDbConnection(myConnectionString);OleDbCommandmyCommand=newOleDbCommand(mySelectQuery,myConnection);myCommand.Connection.Open();OleDbDataReadermyReader=myCommand.ExecuteReader(CommandBehavior.CloseConnection);Chart1.DataBindTable(myReader,"Name");myReader.Close();myConnection.Close();因為數(shù)據(jù)源中只有兩列Name和Sales,因此在調(diào)用Chart1.DataBindTable方法的時候,告訴了圖表X軸的名稱為Name,因此自動將Sales設(shè)置為Y軸的數(shù)據(jù)了.生成的圖形如下:
如果修改一下Sql語句為:SELECTName,ID,RegionIDFROMREPS;其它都不變化,再看看圖表是如何處理另外兩個字段的,生成的圖表如下:
此時,圖表自動將ID,RegionID字段當(dāng)成了Y值,生成了兩個Series,因此每個用戶都有兩個值,生成的圖形也有兩個柱狀圖.
上面是一種動態(tài)綁定的方式,有人可能會問了,如果我想確定我要綁定的列,比如:X軸綁定某個字段,Y軸綁定某個字段如何操作呢?對于這種綁定,有幾種方法可以實現(xiàn).
第一種:這種方法可能是很常見的,在原來的.NET編程中出現(xiàn)的機(jī)率非常之高,方法如下://設(shè)置數(shù)據(jù)源,myDv是一個取出數(shù)據(jù)集的DataView
chart1.DataSource=myDv;
//分別設(shè)置圖表的X值和Y值
chart1.Series["Series1"].XValueMember="Name";
chart1.Series["Series1"].YValueMembers="Sales";
//綁定設(shè)置的數(shù)據(jù)
chart1.DataBind();
第二種:即直接調(diào)用點的綁定方法//myReader為取得的DataReader對象Chart1.Series["Series1"].Points.DataBindXY(myReader,"Name",myReader,"Sales");第三種:調(diào)用DataBind的方法實現(xiàn)Chart1.Series["Series1"].Points.DataBind(myReader,"Name","Sales","");上面幾種方法得到的效果都是一樣的.當(dāng)然了,上面三種方法需要自己建立Series,要顯示兩個柱狀圖,像上面的例子中的圖形,那么得手動建立兩個Series,然后分別進(jìn)行上面的綁定操作。
此處說一下Label和Tooltip的綁定方式,要在綁定的圖表中顯示標(biāo)簽(Label)及提示(Tooltip),可以在綁定的時候,設(shè)置綁定的屬性.對于上面的第一、二種方法,可以調(diào)用如下的方法來設(shè)置Label和Tooltip;例如,兩個數(shù)據(jù)序列名稱分別為Series1和Series2,設(shè)置代碼如下:Chart1.Series["Series1"].Label="#VAL";
Chart1.Series["Series1"].Points.DataBind(myDs.Tables[0].DefaultView,"Name","ID","");
Chart1.Series["Series2"].Label="#VAL";
Chart1.Series["Series2"].Points.DataBind(myDs.Tables[0].DefaultView,"Name","RegionID","");其中的#VAL是Label和Tooltip的通配符,表示取默認(rèn)Y軸變量的意思。具體的詳細(xì)操作可以參考例程:ChartFeatures/Labels下面的內(nèi)容。以后有空我也寫一篇Label的和其它變量的設(shè)置吧。
對于第三種調(diào)用的綁定則稍微不同,如下:Chart1.Series["Series1"].Points.DataBind(myDs.Tables[0].DefaultView,"Name","ID","Label=ID,ToolTip=RegionID");Chart1.Series["Series2"].Points.DataBind(myDs.Tables[0].DefaultView,"Name","RegionID","Label=RegionID,ToolTip=ID");其實就是利用第三個屬性,通過格式化的字符串來設(shè)置綁定屬性,Label表示標(biāo)簽,ToolTip表示提示信息,Url表示超鏈接等等。最后生成的圖片如下:
2.綁定一個交叉表
微軟的圖表控件提供了一個交叉表數(shù)據(jù)的綁定方法DataBindCrossTable,它可以根據(jù)數(shù)據(jù)動態(tài)的生成數(shù)據(jù)序列(Series),借用官方的例子,數(shù)據(jù)庫的表數(shù)據(jù)如下:
我們先看看DataBindCrossTable的參數(shù),它有兩個重載方法,分別是:publicvoidDataBindCrossTable(IEnumerabledataSource,stringseriesGroupByField,stringxField,stringyFields,stringotherFields,PointSortOrdersortingOrder)以及publicvoidDataBindCrossTable(IEnumerabledataSource,stringseriesGroupByField,stringxField,stringyFields,stringotherFields)每個參數(shù)的含義如下:
dataSource
要綁定的數(shù)據(jù)源.
seriesGroupByField
要分組統(tǒng)計的數(shù)據(jù)字段名稱,例如按姓名、日期等.
xField
X軸綁定的字段名稱.
yFields
Y軸綁定的字段名稱,如果需要綁定多個字段,則用逗號將字段名分開.
otherFields
其它數(shù)據(jù)字段屬性,就是上面剛講的,標(biāo)簽、提示、Url等屬性.
sortingOrder
設(shè)置數(shù)據(jù)是正確還是逆序排列.
此時要以統(tǒng)計每個用戶的年銷售曲線,那么分組統(tǒng)計的字段名應(yīng)該設(shè)置為Name,如下:Chart1.DataBindCrossTable(
myReader,
"Name",
"Year",
"Sales",
"Label=Commissions{C}");用如上的方法綁定,生成的圖形如下:相反,如果要統(tǒng)計用戶每年的曲線,則將字段反轉(zhuǎn)一下即可,如下:Chart1.DataBindCrossTable(
myReader,
"Year",
"Name",
"Sales",
"Label=Commissions{C}");
這次就先說到這里咯,說幾個需要注意的地方:
在進(jìn)行Y軸數(shù)據(jù)綁定的時候,如果要綁定多個字段,默認(rèn)情況會出錯,那是因為需要設(shè)置Y軸的可保存值數(shù)量,設(shè)置為你需要保存的數(shù)量即可,設(shè)置的地點在:Series-》YValuesPrePoint,設(shè)置為你需要顯示的個數(shù)即可。
在進(jìn)行DataTable綁定的時候,Label、ToolTip等屬性的字段格式化比較困難(otherFields屬性),我試了半天,也就試出了一次只能綁定一個字段,因為是和數(shù)據(jù)集綁定,如果要在標(biāo)簽上增加文字的話,可以使用:Field{xxxx#xxxx},其中#會替換為相應(yīng)的文字,例如:Field的值為45,那么最后的呈現(xiàn)的結(jié)果就是:xxxx45XXXX.
BTW:有很多東西我自己也在研究中,因此說得不是很完善,希望大家一起研究吧~下次再研究一下數(shù)據(jù)操作方面的東東以及標(biāo)簽等的顯示。解決ASP.NETChart控件出錯為ChartImg.axd執(zhí)行子請求時出錯標(biāo)簽:
Chart
ChartImg
ChartImageHandler
分類:
NET2009-12-1009:561.修改web.Config<addkey="ChartImageHandler"value="storage=file;timeout=20;url=~/TempImages/;"/>將其中的dir=c:\TempImages\的絕對路徑修改外url=~/TempImages/相對路徑(前提條件:網(wǎng)站文件中必須包含TempImages文件夾)2.修改<addpath="ChartImg.axd"verb="GET,HEAD"type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,System.Web.DataVisualization,Version=,Culture=neutral,PublicKeyToken=31bf3856ad364e35"validate="false"/>為<addpath="ChartImg.axd"verb="GET,POST,HEAD"type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,System.Web.DataVisualization,Version=,Culture=neutral,PublicKeyToken=31bf3856ad364e35"validate="false"/>3.修改<addname="ChartImageHandler"preCondition="integratedMode"verb="GET,HEAD"
path="ChartImg.axd"type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,System.Web.DataVisualization,Version=,Culture=neutral,PublicKeyToken=31bf3856ad364e35"/>為:<addname="ChartImageHandler"preCondition="integratedMode"verb="GET,HEAD,POST"
path="ChartImg.axd"type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,System.Web.DataVisualization,Version=,Culture=neutral,PublicKeyToken=31bf3856ad364e35"/>介紹MSChart的常用屬性和事件標(biāo)簽:
mschart
繪圖
數(shù)據(jù)源
集合
綁定
分類:
NET2009-09-0414:24介紹MSChart的常用屬性和事件MSChart的元素組成
最常用的屬性包括ChartAreas:增加多個繪圖區(qū)域,每個繪圖區(qū)域包含獨立的圖表組、數(shù)據(jù)源,用于多個圖表類型在一個繪圖區(qū)不兼容時。AlignmentOrientation:圖表區(qū)對齊方向,定義兩個繪圖區(qū)域間的對齊方式。AlignmentStyle:圖表區(qū)對齊類型,定義圖表間用以對其的元素。AlignWithChartArea:參照對齊的繪圖區(qū)名稱。InnerPlotPosition:圖表在繪圖區(qū)內(nèi)的位置屬性。Auto:是否自動對齊。Height:圖表在繪圖區(qū)內(nèi)的高度(百分比,取值在0-100)Width:圖表在繪圖區(qū)內(nèi)的寬度(百分比,取值在0-100)X,Y:圖表在繪圖區(qū)內(nèi)左上角坐標(biāo)Position:繪圖區(qū)位置屬性,同InnerPlotPosition。Name:繪圖區(qū)名稱。Axis:坐標(biāo)軸集合Title:坐標(biāo)軸標(biāo)題TitleAlignment:坐標(biāo)軸標(biāo)題對齊方式Interval:軸刻度間隔大小IntervalOffset:軸刻度偏移量大小MinorGrid:次要輔助線MinorTickMark:次要刻度線MajorGrid:主要輔助線MajorTickMark:主要刻度線DataSourceID:MSChart的數(shù)據(jù)源。Legends:圖例說明。Palette:圖表外觀定義。Series:最重要的屬性,圖表集合,就是最終看到的餅圖、柱狀圖、線圖、點圖等構(gòu)成的集合;可以將多種相互兼容的類型放在一個繪圖區(qū)域內(nèi),形成復(fù)合圖。IsValueShownAsLabel:是否顯示數(shù)據(jù)點標(biāo)簽,如果為true,在圖表中顯示每一個數(shù)據(jù)值Label:數(shù)據(jù)點標(biāo)簽文本LabelFormat:數(shù)據(jù)點標(biāo)簽文本格式LabelAngle:標(biāo)簽字體角度Name:圖表名稱Points:數(shù)據(jù)點集合XValueType:橫坐標(biāo)軸類型YValueType:縱坐標(biāo)軸類型XValueMember:橫坐標(biāo)綁定的數(shù)據(jù)源(如果數(shù)據(jù)源為Table,則填寫橫坐標(biāo)要顯示的字段名稱)YValueMembers:縱坐標(biāo)綁定的數(shù)據(jù)源(如果數(shù)據(jù)源為Table,則填寫縱坐標(biāo)要顯示的字段名稱,縱坐標(biāo)可以有兩個)ChartArea:圖表所屬的繪圖區(qū)域名稱ChartType:圖表類型(柱形、餅形、線形、點形等)Legend:圖表使用的圖例名稱Titles:標(biāo)題集合。width:MSChart的寬度。height:MSChart的高度。常用事件:Series1.Points.DataBind()
綁定數(shù)據(jù)點集合,如果要在一個MSChart控件的一個繪圖區(qū)(ChartArea)內(nèi)添加多個不同數(shù)據(jù)源的圖表,就用這個主動綁定數(shù)據(jù)集合的方法??梢詫⒈碇兄付ㄗ侄蔚闹到壎ǖ街付ǖ淖鴺?biāo)軸上。MSChart1.DataBind()
給整個MSChart綁定一個數(shù)據(jù)源,該MSChart中的圖表全部可以使用該數(shù)據(jù)源作為統(tǒng)計來源。ASP.NET3.5圖表控件親密接觸標(biāo)簽:
3d
屬性
序列
mschart
圖例
分類:
NET2009-09-0414:43【51CTO快譯】圖表是一種直觀易懂的顯示信息的方式,為了在.Net應(yīng)用程序中支持圖表,微軟在.NetSP1和VisualStudio2008中提供了一個插件以支持強(qiáng)壯的圖表,再也不用花錢購買昂貴的、有專利權(quán)的軟件了。為了能夠創(chuàng)建本文所說的圖表,你需要安裝MicrosoftChartControlsforMicrosoft.NETFramework3.5和MicrosoftChartControlsadd-onforMicrosoftVisualStudio2008。如果你對圖表還不熟悉,那就仔細(xì)閱讀本文吧。ChartAreasChartAreas屬性是ChartArea對象的集合,ChartArea負(fù)責(zé)顯示容器的屬性或圖表的背景,由于不止一個,這就意味著MSChart控件可以包含多個圖表。
在使用多個ChartAreas時理解下面幾點內(nèi)容非常重要:在技術(shù)上可以控制ChartArea的位置,因此多個ChartArea可以疊加,但不推薦這么做,建議在MSChart控件內(nèi)的獨立區(qū)域內(nèi)繪制它們,為了合并或覆蓋數(shù)據(jù)點,推薦在一個ChartArea內(nèi)使用多個序列,后面將會有介紹。默認(rèn)情況下,控件會為你自動調(diào)整大小和位置。單個ChartArea將會獨立調(diào)整以適應(yīng)數(shù)據(jù),正如上圖所顯示的,第二個ChartArea中的Y值更大,數(shù)據(jù)點也更少。多個ChartArea允許你使用多個不相容的ChartTypes(序列對象屬性,控制圖表的顯示類型,如條形、柱狀和餅狀)顯示圖表,圖表任然顯示在相同的MSChart控件內(nèi)。對于單個ChartArea,有許多獨立的屬性可以設(shè)置和調(diào)整,這樣你就可以自行調(diào)整圖表區(qū)域以滿足不同的需要,它的大部分屬性和面板控件的屬性都差不多,因此這里我們就不多說了,只說一下ChartArea唯一的屬性,下面是這些唯一屬性的清單:3D樣式:使用ChartArea的Area3DStyle屬性和子屬性,我們可以創(chuàng)建漂亮的、十分搶眼的3D圖表,無論是在設(shè)計器中還是在代碼中都必需將Enable3D屬性設(shè)置為TRUE,其余的參數(shù)可以通過調(diào)整旋轉(zhuǎn)、視角、照明方式和其它3D元素,讓一個圖像看起來具有3D效果。
坐標(biāo)軸控制和樣式:坐標(biāo)軸集合包括x軸和y軸,以及第二個x軸和y軸,這四個項目的屬性允許你設(shè)置樣式、設(shè)置標(biāo)簽、定義間隔、設(shè)置工具提示、設(shè)置縮放等,如果你的圖標(biāo)要求精確的間隔、標(biāo)簽或其它特殊的顯示需要,你可以使用這些屬性。例如,你可以顛倒坐標(biāo)軸的值,或控制如何在x軸上顯示標(biāo)簽。如果你使用圖表顯示實時信息,可以使用IntervalType屬性來配置基于日期和時間顯示數(shù)據(jù)點。選擇光標(biāo):如果你對用戶使用鼠標(biāo)選擇數(shù)據(jù)點或點擊和拖拉范圍非常感興趣,這個時候就要用到CursorX和CursorY屬性了,你可以啟用選擇,并設(shè)置最初的光標(biāo)位置或范圍。Series和ChartAreas屬性一樣,Series屬性是一個集合。單個ChartAreas實例包括3個重要的屬性:ChartArea屬性、ChartType屬性和Points集合屬性。ChartArea:識別使用哪個ChartArea。ChartType:識別表示數(shù)據(jù)時使用的圖標(biāo)類型,基本的類型有條形、柱狀、餅狀和線狀,還有一些高級選項,如K線圖、曲線圖、追星圖等。Points:它是DataPoint對象的集合,包括x值和y值,它們是繪在圖表上的序列的一部分,數(shù)據(jù)綁定時最常用的增加數(shù)據(jù)點的方法,本文后面會做介紹。Series實例上的其他常用屬性和人們廣泛了解的還包括:Color:這個屬性用于單獨設(shè)置每個數(shù)據(jù)點序列的顏色,默認(rèn)情況下,這個屬性是空白的,控件會自動改變顏色,以保證將多個序列區(qū)分開來。IsValueShownAsLabel:將這個屬性的值設(shè)為TRUE后(默認(rèn)是FLASE),圖表將顯示每個數(shù)據(jù)點的Y值。
在講多個序列實例合并到一個ChartArea中時,例如下面兩個獨立的圖表,每個圖表都包括6個數(shù)據(jù)點。
假設(shè)你想比較這兩個圖表中的數(shù)據(jù)點,你可以將這兩個MSChart控件放在一起,相互挨著,也可以在一個圖表中使用兩個ChartAreas,這兩種方式都沒問題,但都不能給你很好的視覺比較效果,這就是為什么MSChart要合并數(shù)據(jù)點,讓你可以肩并肩地對比數(shù)據(jù)。將第二個圖表中的數(shù)據(jù)作為第二個序列實例添加到第一個圖表中,一下子就從視覺上改善了對比的效果。
使用多個序列實例時,記住每個序列使用的ChartType非常重要,不是所有ChartType選項放在一起都是兼容的??偟恼f來,圖表控件的層次如下:MSChart控件有零到多個ChartAreas,一個ChartAreas有零到多個序列(Series),一個序列有零到多個數(shù)據(jù)點(DataPoints)。數(shù)據(jù)綁定數(shù)據(jù)可以在設(shè)計時或運行時綁定,在設(shè)計時綁定要使用到數(shù)據(jù)源配置向?qū)?,在MSChart控件數(shù)據(jù)源屬性下拉按鈕中可以找到它,如果你已經(jīng)配置過數(shù)據(jù)源,你可以在下拉列表中進(jìn)行選擇。圖表函數(shù)DataBind():綁定數(shù)據(jù)源的基礎(chǔ)函數(shù)。DataBindTable():綁定圖表到特定的數(shù)據(jù)表,但不允許綁定多個Y值,每個序列不同的數(shù)據(jù)源或x值、y值有不同的數(shù)據(jù)源。DataBindCrossTab():將圖表綁定到一個數(shù)據(jù)源,并允許基于一個數(shù)據(jù)列進(jìn)行分組,在具體指定的列上每個唯一的值將自動創(chuàng)建一個單獨的序列。數(shù)據(jù)點函數(shù)DataBind():綁定一個序列到單一的數(shù)據(jù)源,并允許其它屬性綁定到同一個數(shù)據(jù)源(如標(biāo)簽、工具提示、圖例文本等)。DataBindXY():允許將x值和y值綁定到獨立的數(shù)據(jù)源,它也用于為每個序列綁定單獨的數(shù)據(jù)源。DataBindY():僅綁定序列中數(shù)據(jù)點的Y值。數(shù)據(jù)源配置好后,MSChart控件可以綁定所有的實現(xiàn)了IEnumerable接口的對象,包括但不限于DataReader、DataSet、Array和List。也允許綁定SqlCommand、OleDbCommand、SqlDataAdapters和OleDbDataAdapter對象。圖例圖例屬性也是一個集合(叫做圖例對象),為了快速理解使用圖例可以做什么,可以把它想象成一個簡單的表,假設(shè)你有一個表格,默認(rèn)有兩列,你可以從前面的例子看出,使用序列實例名的默認(rèn)設(shè)置和序列的顏色,圖例可以通過添加額外的單元列到CellColumn集合上進(jìn)行擴(kuò)展,還可以添加列標(biāo)題,便于更好地理解圖例。在下面的例子,標(biāo)題“Name”和“Color”已經(jīng)添加到默認(rèn)圖例實例上。
每個序列的圖例文本由序列自身控制,在每個序列實例上使用LegendText屬性以改變圖表上圖例的文本,你也可以給圖例一個標(biāo)題。在下面的例
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年粵教版八年級歷史上冊月考試卷
- 2025年華東師大版必修3生物下冊階段測試試卷含答案
- 2025年湘師大新版必修2物理上冊月考試卷
- 2025年木材加工與木工承包服務(wù)合同3篇
- 2025年滬科版九年級科學(xué)上冊階段測試試卷
- 2025年度派駐企業(yè)網(wǎng)絡(luò)安全防護(hù)合同范本4篇
- 二零二五年度牛奶飲品行業(yè)數(shù)據(jù)分析與市場預(yù)測合同2篇
- 二零二五版明企金哨區(qū)塊鏈應(yīng)用開發(fā)合同書4篇
- 二零二五版民間借貸合同糾紛律師代理服務(wù)合同4篇
- 2025年度商業(yè)地產(chǎn)車位租賃與商業(yè)營銷活動支持合同4篇
- 習(xí)近平法治思想概論教學(xué)課件緒論
- 寵物會展策劃設(shè)計方案
- 孤殘兒童護(hù)理員(四級)試題
- 梁湘潤《子平基礎(chǔ)概要》簡體版
- 醫(yī)院急診醫(yī)學(xué)小講課課件:急診呼吸衰竭的處理
- 腸梗阻導(dǎo)管在臨床中的使用及護(hù)理課件
- 調(diào)料廠工作管理制度
- 小學(xué)英語單詞匯總大全打印
- 衛(wèi)生健康系統(tǒng)安全生產(chǎn)隱患全面排查
- GB/T 15114-2023鋁合金壓鑄件
- 貨物驗收單表格模板
評論
0/150
提交評論