Binding to Various Datasources

Binding to a Generic List of Simple Types

The ShieldChart can be bound to a simple list of objects in the same way as binding to a regular array can be done. The following sample demonstrates binding to different datasources:

<shield:ShieldChart ID="ShieldChart1" Width="100%" Height="400px" runat="server"
    CssClass="chart" >
    <DataSeries>
        <shield:ChartBarSeries>
        </shield:ChartBarSeries>
    </DataSeries>
</shield:ShieldChart>
protected void Page_Load(object sender, System.EventArgs e)
{
    double[] ValuesArray = { 20.6, 20.5, 20.8, 20.3, 21.9, 21.2, 21.0, 21.4 };
    ShieldChart1.DataSource = ValuesArray;
    ShieldChart1.DataBind();
}

Binding to a Generic List of Objects

The ShieldChart can use a list of custom objects which mimics a declarative datasource. In this case the DataFieldY or DataFieldX property (DataFieldLow or DataFieldHigh for range series) of the series need to be set.

<shield:ShieldChart ID="ShieldChart1" Width="100%" Height="400px" runat="server" 
    OnTakeDataSource="ShieldChart1_TakeDataSource"
    CssClass="chart" ZoomMode="XY">
    <PrimaryHeader Text="Internet usage statistics"></PrimaryHeader>
    <ExportOptions AllowExportToImage="false" AllowPrint="false" />
    <Axes>
        <shield:ChartAxisX 
            CategoricalValues="Jan, Feb, Mar, Apr, May, Jun"></shield:ChartAxisX>
        <shield:ChartAxisY>
            <Title Text="Visitor statistics"></Title>
        </shield:ChartAxisY>
    </Axes>
    <DataSeries>
        <shield:ChartBarSeries DataFieldY="Total" CollectionAlias="Total Visits">
        </shield:ChartBarSeries>
        <shield:ChartBarSeries DataFieldY="Unique" CollectionAlias="Unique Visits">
        </shield:ChartBarSeries>
    </DataSeries>
</shield:ShieldChart>
protected void ShieldChart1_TakeDataSource(object sender, Shield.Web.UI.ChartTakeDataSourceEventArgs e)
{
    List datasource = new List() 
    { 
        new VisitorStatistic() { Total = 565000, Unique = 152000 },
        new VisitorStatistic() { Total = 630400, Unique = 234000 },
        new VisitorStatistic() { Total = 743000, Unique = 123000 },
        new VisitorStatistic() { Total = 910200, Unique = 348000 },
        new VisitorStatistic() { Total = 1170200, Unique = 167000 },
        new VisitorStatistic() { Total = 1383000, Unique = 283000 }
    };

    ShieldChart1.DataSource = datasource;
}

private class VisitorStatistic
{
    public double Unique { get; set; }
    public double Total { get; set; }
}   

Binding to dataset

<shield:ShieldChart ID="ShieldChart1" Width="100%" Height="400px" runat="server"
    CssClass="chart" >
    <DataSeries>
        <shield:ChartBarSeries DataFieldY="UnitsInStock">
        </shield:ChartBarSeries>
    </DataSeries>
</shield:ShieldChart>
protected void Page_Load(object sender, System.EventArgs e)
{
    ShieldChart1.DataSource = GetData();
    ShieldChart1.DataBind();
}

private DataSet GetData()
{
    DataSet ds = new DataSet("Test");
    DataTable dt = new DataTable("Products");
    dt.Columns.Add("Id ", Type.GetType("System.Int32 "));
    dt.Columns.Add("UnitsInStock ", Type.GetType("System.Double "));
    dt.Rows.Add(1, 3.45);
    dt.Rows.Add(2, 5.95);
    dt.Rows.Add(3, 7.99);
    dt.Rows.Add(4, 11.95);
    ds.Tables.Add(dt);
    return ds;
}