<script language="C#" runat=server>
public IEnumerable DataSource;
public string DataField;
public string BackColor = "White";
public string ForeColor = "Blue";
protected override void OnDataBinding( EventArgs e )
{
IEnumerator objDataEnum;
object objDataItem;
string strUrl = String.Empty;
int intMaxData = 0;
if (DataSource != null && DataField != null )
{
objDataEnum = DataSource.GetEnumerator(); //返回对 IEnumerator 接口的引用,该接口用于赋予对枚举项的访问权
while ( objDataEnum.MoveNext() )
{
objDataItem = DataBinder.Eval( objDataEnum.Current, DataField );
if ( IsNumeric(objDataItem) )
{
strUrl += "&d=" + objDataItem.ToString();
//Response.Write("strUrl = " + strUrl + "<br/>");
//Response.Write(objDataItem.ToString()+"<br/>");
if ( (int)objDataItem > intMaxData )
intMaxData = (int)objDataItem;
}
}
}
strUrl = "x=" + intMaxData + "&backcolor=" + BackColor + "&forecolor=" + ForeColor + strUrl;
imgChartImage.ImageUrl = "ChartImage.aspx?" + strUrl;
Response.Write(imgChartImage.ImageUrl+"<br/>");
}
bool IsNumeric(Object o)
{
try
{
Convert.ToInt32(o);
return true;
}
catch
{
return false;
}
}
</Script>
<asp:Image
ID="imgChartImage"
Runat="Server" />
<%@ Page ContentType="image/gif" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Imaging" %>
<Script Language="C#" Runat="Server">
void Page_Load()
{
// Calculate Multiplier
decimal decMaxData = Decimal.Parse( Request.QueryString[ "x" ] );
decimal decMultiplier = 100 / decMaxData;
// Retrieve Colors
string strBackColor = Request.QueryString[ "backcolor" ];
string strForeColor = Request.QueryString[ "forecolor" ];
Color objBackColor = ColorTranslator.FromHtml( strBackColor );
Color objForeColor = ColorTranslator.FromHtml( strForeColor );
SolidBrush objBrush = new SolidBrush( objForeColor );
// Build Bar Chart
string[] arrChartData = Request.QueryString.GetValues( "d" );
int intWidth = ( arrChartData.Length * 15 ) + 10;
int intHeight = (int)( decMaxData * decMultiplier ) + 5;
if (arrChartData != null)
{
Bitmap objBitmap = new Bitmap( intWidth, intHeight );
Graphics objGraphics = Graphics.FromImage( objBitmap );
objGraphics.Clear( objBackColor );
for (int intDataIndex = 0; intDataIndex < arrChartData.Length; intDataIndex++)
{
int intDataItem = (int)(Int32.Parse(arrChartData[ intDataIndex ]) * decMultiplier);
objGraphics.FillRectangle(
objBrush,
( intDataIndex * 15 ) + 5,
intHeight - intDataItem,
10,
intHeight );
}
objBitmap.Save( Response.OutputStream, ImageFormat.Gif );
}
}
</Script>
<%@ Page Language="C#" %>
<%@ Register TagPrefix="myControl" TagName="Chart" SRC="chart.ascx" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="C#" Debug="true" runat=server>
void Page_Load(Object sender , EventArgs e)
{
SqlConnection conPubs;
SqlCommand cmdSelect;
conPubs = new SqlConnection("Server=localhost//tujunyan;Integrated Security=SSPI;database=Pubs" );
cmdSelect = new SqlCommand( "Select ytd_sales From Titles", conPubs );
conPubs.Open();
ctrlChart.DataSource = cmdSelect.ExecuteReader();
ctrlChart.DataField = "ytd_sales";
ctrlChart.DataBind();
conPubs.Close();
}
</Script>
<html>
<head><title>TestChart.aspx</title></head>
<body>
<h2>Year-To-Date Sales</h2>
<myControl:Chart
id="ctrlChart"
BackColor="Orange"
ForeColor="Purple"
Runat="Server" />
</body>
</html>