Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
использование_chart.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
580 Кб
Скачать
☆

Привязка к объектному источнику данных

Один из наиболее гибких механизмов заполнения диаграммы предусматривает использование ObjectDataSource, когда определяется объект, который может получать данные, а в качестве моста между логикой извлечения данных в коде и элементом управления Chart служит ObjectDataSource. Класс извлечения должен быть создан в папке App_Code. В следующем примере возвращаются простые статические данные:

public class MyObjectDataSource

{

public class DataItem

{

public string Name { get; set; }

public double Popularity { get; set; }

}

public DataItem[] GetData()

{

return new DataItem[] {

new DataItem() {Name = "Ватрушка", Popularity = 30},

new DataItem() {Name = "Мороженное", Popularity = 30},

new DataItem() {Name = "Орешки", Popularity = 20},

new DataItem() {Name = "Шоколадка", Popularity = 20}

};

}

}

В этом примере определен класс DataItem, имеющий свойства Name и Popularity. Метод GetData() генерирует и возвращает массив элементов DataItem. Эта методика привязки будет также работать с методами, которые возвращают объекты DataSet и DataTable. Гибкость использования ObjectDataSource обусловлена тем, что средства, определяющие источник данных, абстрагируются от диаграммы, что позволяет свободно изменять бизнес-логику. Для работы с данными создается новый экземпляр ObjectDataSource с передачей конструктору имени созданного класса извлечения и имени метода, который должен быть вызван для получения данных. В рассматриваемом примере ими соответственно являются MyObjectDataSource и GetData():

protected void Page_Load(object sender, EventArgs e)

{

// Форматировать диаграмму

Chart1.BackColor = Color.Gray;

Chart1.BackSecondaryColor = Color.WhiteSmoke;

Chart1.BackGradientStyle = GradientStyle.DiagonalRight;

Chart1.BorderlineDashStyle = ChartDashStyle.Solid;

Chart1.BorderlineColor = Color.Gray;

Chart1.BorderSkin.SkinStyle = BorderSkinStyle.Emboss;

// Форматировать область диаграммы

Chart1.ChartAreas[0].BackColor = Color.Wheat;

// Добавить и форматировать заголовок

Chart1.Titles.Add("ASP.NET Chart");

Chart1.Titles[0].Font = new Font("Utopia", 16);

Chart1.Series.Add(new Series("Default")

{

ChartType = SeriesChartType.Pie

});

// Создать объектный источник данных

ObjectDataSource ds = new ObjectDataSource("MyObjectDataSource", "GetData") ;

// Привязать источник к диаграмме

Chart1.DataSource = ds;

Chart1.Series[0].XValueMember = "Name";

Chart1.Series[0].YValueMembers = "Popularity";

}

После создания ObjectDataSource привязывается к элементу управления через свойство Chart.DataSource. На этот момент источник данных действует в качестве моста между классом извлечения и диаграммой, но диаграмма не знает, что делать с данными, которые доступны. Эта информация предоставляется с использованием свойств Series.XValueMember и Series.YValueMember, которые позволяют определять, какие члены объекта ObjectDataSource должны применяться для осей X и Y. Диаграмма, созданная этим методом, показана на рисунке ниже: