ASP.NET Web Sayfalarıyla Grafikte Veri Görüntüleme (Jilet)Displaying Data in a Chart with ASP.NET Web Pages (Razor)

Microsoft tarafındanby Microsoft

Bu makalede, Chart yardımcıyı kullanarak ASP.NET bir Web Sayfaları (Jilet) web sitesinde verileri görüntülemek için grafiğin nasıl kullanılacağı açıklanmaktadır.This article explains how to use a chart to display data in an ASP.NET Web Pages (Razor) website by using the Chart helper.

Ne öğreneceksiniz:What you'll learn:

  • Grafikte veri görüntüleme.How to display data in a chart.
  • Yerleşik temaları kullanarak grafikleri stile şekillendirme.How to style charts using built-in themes.
  • Grafiklerin nasıl kaydedilen ve daha iyi performans için nasıl önbelleğe kazanılabildiği.How to save charts and how to cache them for better performance.

Bu makalede tanıtılan ASP.NET programlama özellikleri şunlardır:These are the ASP.NET programming features introduced in the article:

  • Chart Yardımcı.The Chart helper.

Note

Bu makaledeki bilgiler ASP.NET Web Sayfaları 1.0 ve Web Sayfaları 2 için geçerlidir.The information in this article applies to ASP.NET Web Pages 1.0 and Web Pages 2.

Grafik YardımcısıThe Chart Helper

Verilerinizi grafik biçiminde görüntülemek istediğinizde, yardımcıyı Chart kullanabilirsiniz.When you want to display your data in graphical form, you can use Chart helper. Yardımcı, Chart çeşitli grafik türlerinde veri görüntüleyen bir görüntü işleyebilir.The Chart helper can render an image that displays data in a variety of chart types. Biçimlendirme ve etiketleme için birçok seçeneği destekler.It supports many options for formatting and labeling. Yardımcı, Chart Microsoft Excel veya diğer araçlardan aşina olabileceğiniz tüm grafik türleri, alan grafikleri, çubuk grafikler, sütun grafikleri, satır grafikleri ve pasta grafikleri — ve stok grafikleri gibi daha özel grafikler de dahil olmak üzere 30'dan fazla grafik türünü işleyebilir.The Chart helper can render more than 30 types of charts, including all the types of charts that you might be familiar with from Microsoft Excel or other tools — area charts, bar charts, column charts, line charts, and pie charts, along with more specialized charts like stock charts.

Alan grafiği Açıklaması: Alan grafiği tipinin resmiArea chart Description: Picture of the Area chart type Çubuk grafik Açıklama: Çubuk grafik türünün resmiBar chart Description: Picture of the Bar chart type
Sütun grafiği Açıklama: Sütun grafik türünün resmiColumn chart Description: Picture of the Column chart type Çizgi grafiği Açıklama: Çizgi grafiği türünün resmiLine chart Description: Picture of the Line chart type
Pasta grafiği Açıklama: Pasta grafik türünün resmiPie chart Description: Picture of the Pie chart type Stok grafiği Açıklaması: Stok grafiği türünün resmiStock chart Description: Picture of the Stock chart type

Grafik ÖğeleriChart Elements

Grafikler verileri ve göstergeler, eksenler, seriler ve benzeri ek öğeleri gösterir.Charts show data and additional elements like legends, axes, series, and so on. Aşağıdaki resim, yardımcıyı kullandığınızda özelleştirebileceğiniz grafik öğelerinin Chart çoğunu gösterir.The following picture shows many of the chart elements that you can customize when you use the Chart helper. Bu makalede, bu öğelerin bazılarını (tümü değil) nasıl ayarlayabileceğinizgösterilmektedir.This article shows you how to set some (not all) of these elements.

Açıklama: Grafik öğelerini gösteren resim

Verilerden Grafik OluşturmaCreating a Chart from Data

Grafikte görüntülediğiniz veriler bir diziden, veritabanından döndürülen sonuçlardan veya XML dosyasındaki verilerden olabilir.The data you display in a chart can be from an array, from the results returned from a database, or from data that's in an XML file.

Dizi KullanmaUsing an Array

ASP.NET Web Sayfaları Programlamaya Giriş'te açıklandığı gibi, Jilet Sözdizimini kullanarakbir dizi benzer öğelerin bir koleksiyonunu tek bir değişkende depolamanızı sağlar.As explained in Introduction to ASP.NET Web Pages Programming Using the Razor Syntax, an array lets you store a collection of similar items in a single variable. Dizileri, grafiğinize eklemek istediğiniz verileri içerecek şekilde kullanabilirsiniz.You can use arrays to contain the data that you want to include in your chart.

Bu yordam, varsayılan grafik türünü kullanarak diziler halindeki verilerden nasıl grafik oluşturabileceğinizi gösterir.This procedure shows how you can create a chart from data in arrays, using the default chart type. Ayrıca, sayfa içinde grafiğin nasıl görüntülenebildiğini de gösterir.It also shows how to display the chart within the page.

  1. ChartArrayBasic.cshtmladlı yeni bir dosya oluşturun.Create a new file named ChartArrayBasic.cshtml.

  2. Varolan içeriği aşağıdakilerle değiştirin:Replace the existing content with the following:

    @{
        var myChart = new Chart(width: 600, height: 400)
            .AddTitle("Chart Title")
            .AddSeries(
                name: "Employee",
                xValue: new[] {  "Peter", "Andrew", "Julie", "Mary", "Dave" },
                yValues: new[] { "2", "6", "4", "5", "3" })
            .Write();
    }
    

    Kod önce yeni bir grafik oluşturur ve genişliğini ve yüksekliğini ayarlar.The code first creates a new chart and sets its width and height. Yöntemi kullanarak grafik başlığını AddTitle belirtirsiniz.You specify the chart title by using the AddTitle method. Veri eklemek için AddSeries yöntemi kullanırsınız.To add data, you use the AddSeries method. Bu örnekte, nameyöntemin xValue, yValues , AddSeries ve parametrelerini kullanırsınız.In this example, you use the name, xValue, and yValues parameters of the AddSeries method. name Parametre grafik göstergesinde görüntülenir.The name parameter is displayed in the chart legend. Parametre, xValue grafiğin yatay ekseni boyunca görüntülenen bir veri dizisi içerir.The xValue parameter contains an array of data that's displayed along the horizontal axis of the chart. Parametre, yValues grafiğin dikey noktalarını çizmek için kullanılan bir veri dizisi içerir.The yValues parameter contains an array of data that's used to plot the vertical points of the chart.

    Yöntem Write aslında grafiği işler.The Write method actually renders the chart. Bu durumda, bir grafik türü belirtmediğiniz Chart için, yardımcı varsayılan grafiği işler, bu da bir sütun grafiğidir.In this case, because you didn't specify a chart type, the Chart helper renders its default chart, which is a column chart.

  3. Sayfayı tarayıcıda çalıştırın.Run the page in the browser. Tarayıcı grafiği görüntüler.The browser displays the chart.

Grafik Verileri için Veritabanı Sorgusu KullanmaUsing a Database Query for Chart Data

Grafik oluşturmak istediğiniz bilgiler bir veritabanındaysa, bir veritabanı sorgusu çalıştırabilir ve ardından grafiği oluşturmak için sonuçlardan gelen verileri kullanabilirsiniz.If the information you want to chart is in a database, you can run a database query and then use data from the results to create the chart. Bu yordam, web sayfaları sitelerinde bir Veritabanı ile çalışmaya girişmakalesinde oluşturulan veritabanından verileri nasıl okuyup görüntüleyebilirASP.NET.This procedure shows you how to read and display the data from the database created in the article Introduction to Working with a Database in ASP.NET Web Pages Sites.

  1. Klasör zaten yoksa, web sitesinin köküne bir Uygulama_Veri klasörü ekleyin.Add an App_Data folder to the root of the website if the folder does not already exist.

  2. Uygulama_Verileri klasörüne, ASP.NET Web Sayfaları Sitelerinde Veritabanıyla Çalışmaya Giriş'teaçıklanan SmallBakery.sdf adlı veritabanı dosyasını ekleyin.In the App_Data folder, add the database file named SmallBakery.sdf that's described in Introduction to Working with a Database in ASP.NET Web Pages Sites.

  3. ChartDataQuery.cshtmladında yeni bir dosya oluşturun.Create a new file named ChartDataQuery.cshtml.

  4. Varolan içeriği aşağıdakilerle değiştirin:Replace the existing content with the following:

    @{
        var db = Database.Open("SmallBakery");
        var data = db.Query("SELECT Name, Price FROM Product");
        var myChart = new Chart(width: 600, height: 400)
            .AddTitle("Product Sales")
            .DataBindTable(dataSource: data, xField: "Name")
            .Write();
    }
    

    Kod ilk Olarak SmallBakery veritabanını açar ve dbonu .The code first opens the SmallBakery database and assigns it to a variable named db. Bu değişken, Database veritabanından okumak ve yazmak için kullanılabilecek bir nesneyi temsil eder.This variable represents a Database object that can be used to read from and write to the database. Ardından, kod her ürünün adını ve fiyatını almak için bir SQL sorgusu çalıştırın.Next, the code runs a SQL query to get the name and price of each product. Kod yeni bir grafik oluşturur ve grafik DataBindTable yöntemini çağırarak veritabanı sorgusunu ona geçirir.The code creates a new chart and passes the database query to it by calling the chart's DataBindTable method. Bu yöntem iki parametre alır: dataSource parametre sorgudaki veriler xField içindir ve parametre grafiğin x ekseni için hangi veri sütununun kullanılacağını ayarlamanızı sağlar.This method takes two parameters: the dataSource parameter is for the data from the query, and the xField parameter lets you set which data column is used for the chart's x-axis.

    DataBindTable Yöntemi kullanmaya alternatif olarak, yardımcının AddSeries yöntemini Chart kullanabilirsiniz.As an alternative to using the DataBindTable method, you can use the AddSeries method of the Chart helper. Yöntem, AddSeries parametreleri xValue ve yValues parametreleri ayarlamanızı sağlar.The AddSeries method lets you set the xValue and yValues parameters. Örneğin, aşağıdaki gibi DataBindTable yöntemi kullanmak yerine:For example, instead of using the DataBindTable method like this:

    .DataBindTable(data, "Name")
    

    Bu yöntemi AddSeries kullanabilirsiniz:You can use the AddSeries method like this:

    .AddSeries("Default",
        xValue: data, xField: "Name",
        yValues: data, yFields: "Price")
    

    Her ikisi de aynı sonuçları verir.Both render the same results. Grafik AddSeries türünü ve verilerini daha açık bir şekilde belirtebildiğiniz DataBindTable için yöntem daha esnektir, ancak ekstra esnekliğe ihtiyacınız yoksa yöntem daha kolaydır.The AddSeries method is more flexible because you can specify the chart type and data more explicitly, but the DataBindTable method is easier to use if you don't need the extra flexibility.

  5. Sayfayı tarayıcıda çalıştırın.Run the page in a browser.

XML Verilerini KullanmaUsing XML Data

Grafik için üçüncü seçenek grafik için veri olarak bir XML dosyası kullanmaktır.The third option for charting is to use an XML file as the data for the chart. Bu, XML dosyasının XML yapısını açıklayan bir şema dosyası (.xsd dosyası) da bulunmasını gerektirir.This requires that the XML file also have a schema file (.xsd file) that describes the XML structure. Bu yordam, bir XML dosyasından verileri nasıl okuyabileceğinizi gösterir.This procedure shows you how to read data from an XML file.

  1. _App Data klasöründe data.xmladında yeni bir XML dosyası oluşturun.In the App_Data folder, create a new XML file named data.xml.

  2. Varolan XML'i, kurgusal bir şirketteki çalışanlar la ilgili bazı XML verileri olan aşağıdakilerle değiştirin.Replace the existing XML with the following, which is some XML data about employees in a fictional company.

    <?xml version="1.0" standalone="yes" ?>
    <NewDataSet xmlns="http://tempuri.org/data.xsd">
        <Employee>
            <Name>Erin</Name>
            <Sales>10440</Sales>
        </Employee>
        <Employee>
            <Name>Kim</Name>
            <Sales>17772</Sales>
        </Employee>
        <Employee>
            <Name>Dean</Name>
            <Sales>23880</Sales>
        </Employee>
        <Employee>
            <Name>David</Name>
            <Sales>7663</Sales>
        </Employee>
        <Employee>
            <Name>Sanjay</Name>
            <Sales>21773</Sales>
        </Employee>
        <Employee>
            <Name>Michelle</Name>
            <Sales>32294</Sales>
        </Employee>
    </NewDataSet>
    
  3. App_Data klasöründe data.xsdadında yeni bir XML dosyası oluşturun.In the App_Data folder, create a new XML file named data.xsd. (Bu süre uzantısı .xsdolduğunu unutmayın .)(Note that the extension this time is .xsd.)

  4. Varolan XML'i aşağıdakilerle değiştirin:Replace the existing XML with the following:

    <?xml version="1.0" ?>
    <xs:schema
        id="NewDataSet"
        targetNamespace="http://tempuri.org/data.xsd"
        xmlns:mstns="http://tempuri.org/data.xsd"
        xmlns="http://tempuri.org/data.xsd"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
        attributeFormDefault="qualified"
        elementFormDefault="qualified">
        <xs:element name="NewDataSet"
            msdata:IsDataSet="true"
            msdata:EnforceConstraints="False">
            <xs:complexType>
                <xs:choice maxOccurs="unbounded">
                    <xs:element name="Employee">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element
                                    name="Name"
                                    type="xs:string"
                                    minOccurs="0" />
                                <xs:element
                                    name="Sales"
                                        type="xs:double"
                                        minOccurs="0" />
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:choice>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    
  5. Web sitesinin kökünde ChartDataXML.cshtmladında yeni bir dosya oluşturun.In the root of the website, create a new file named ChartDataXML.cshtml.

  6. Varolan içeriği aşağıdakilerle değiştirin:Replace the existing content with the following:

    @using System.Data;
    @{
        var dataSet = new DataSet();
        dataSet.ReadXmlSchema(Server.MapPath("~/App_Data/data.xsd"));
        dataSet.ReadXml(Server.MapPath("~/App_Data/data.xml"));
        var dataView = new DataView(dataSet.Tables[0]);
    
        var myChart = new Chart(width: 600, height: 400)
            .AddTitle("Sales Per Employee")
            .AddSeries("Default", chartType: "Pie",
                xValue: dataView, xField: "Name",
                yValues: dataView, yFields: "Sales")
            .Write();
    }
    

    Kod önce bir DataSet nesne oluşturur.The code first creates a DataSet object. Bu nesne, XML dosyasından okunan verileri yönetmek ve şema dosyasındaki bilgilere göre düzenlemek için kullanılır.This object is used to manage the data that's read from the XML file and organize it according to the information in the schema file. (Kodun üst kısmında ifadenin using SystemDatayer aldığına dikkat edin.(Notice that the top of the code includes the statement using SystemData. Bu DataSet nesne ile çalışabilmek için gereklidir.This is required in order to be able to work with the DataSet object. Daha fazla bilgi için, bu makalenin ilerleyen saatlerinde "Ifadeleri ve Tam Nitelikli Adları" Kullanma'ya bakın.)For more information, see "Using" Statements and Fully Qualified Names later in this article.)

    Ardından, kod veri DataView kümesini temel alan bir nesne oluşturur.Next, the code creates a DataView object based on the dataset. Veri görünümü, grafiğin — bağlayabileceği, okunan ve çizilebilen bir nesne sağlar.The data view provides an object that the chart can bind to — that is, read and plot. Grafik, dizi verilerini grafikyaparken AddSeries daha önce gördüğünüz gibi, bu kez xValue yValues parametrenin DataView nesneye ayarlanması dışında, yöntemi kullanarak verilere bağlanır.The chart binds to the data using the AddSeries method, as you saw earlier when charting the array data, except that this time the xValue and yValues parameters are set to the DataView object.

    Bu örnek, belirli bir grafik türünü nasıl belirtdiğinizi de gösterir.This example also shows you how to specify a particular chart type. AddSeries Yönteme veri eklendiğinde, chartType parametre de bir pasta grafiği görüntülemek üzere ayarlanır.When the data is added in the AddSeries method, the chartType parameter is also set to display a pie chart.

  7. Sayfayı tarayıcıda çalıştırın.Run the page in a browser.

Tip

"Kullanma" Deyimleri ve Tam Nitelikli İsimler"Using" Statements and Fully Qualified Names

Web Sayfalarını Jilet sözdizimi ile ASP.NET .NET Framework binlerce bileşenden (sınıf) oluşur.The .NET Framework that ASP.NET Web Pages with Razor syntax is based on consists of many thousands of components (classes). Tüm bu sınıflarla çalışmayı yönetilebilir hale getirmek için, bir şekilde kitaplıklar gibi ad boşluklarıhalinde düzenlenirler.To make it manageable to work with all these classes, they're organized into namespaces, which are somewhat like libraries. Örneğin, System.Web ad alanı tarayıcı/sunucu iletişimini destekleyen System.Xml sınıflar içerir, ad alanı XML dosyaları oluşturmak System.Data ve okumak için kullanılan sınıfları içerir ve ad alanı verilerle çalışmanıza izin veren sınıflar içerir.For example, the System.Web namespace contains classes that support browser/server communication, the System.Xml namespace contains classes that are used to create and read XML files, and the System.Data namespace contains classes that let you work with data.

.NET Framework'de belirli bir sınıfa erişmek için kodun sadece sınıf adını değil, sınıfın içinde bulunduğu ad alanını da bilmesi gerekir.In order to access any given class in the .NET Framework, code needs to know not just the class name, but also the namespace that the class is in. Örneğin, Chart yardımcıyı kullanabilmek için kodun ad System.Web.Helpers.Chart alanını (System.Web.Helpers``Chart) sınıf adı yla birleştiren sınıfı bulması gerekir.For example, in order to use the Chart helper, code needs to find the System.Web.Helpers.Chart class, which combines the namespace (System.Web.Helpers) with the class name (Chart). Bu, sınıfın tam nitelikli adı — .NET Framework'ün enginliği içinde tam ve net konumu olarak bilinir.This is known as the class's fully-qualified name — its complete, unambiguous location within the vastness of the .NET Framework. Kod olarak, bu aşağıdaki gibi görünür:In code, this would look like the following:

var myChart = new System.Web.Helpers.Chart(width: 600, height: 400) // etc.

Ancak, bir sınıfa veya yardımcıya başvurmak istediğiniz her seferinde bu uzun, tam nitelikli adları kullanmak zorunda olmak hantal (ve hataya yatkındır).However, it's cumbersome (and error prone) to have to use these long, fully-qualified names every time you want to refer to a class or helper. Bu nedenle, sınıf adlarını kullanmayı kolaylaştırmak için, ilgilendiğiniz ad alanlarını içe aktarabilirsiniz, ki bu genellikle .NET Framework'deki birçok ad alanı arasından sadece bir avuç tır.Therefore, to make it easier to use class names, you can import the namespaces you're interested in, which is usually is just a handful from among the many namespaces in the .NET Framework. Bir ad alanı aldıysanız, tam nitelikli ad (Chart``System.Web.Helpers.Chart) yerine sadece bir sınıf adı kullanabilirsiniz.If you've imported a namespace, you can use just a class name (Chart) instead of the fully qualified name (System.Web.Helpers.Chart). Kodunuz çalıştığında ve bir sınıf adıile karşılaştığında, o sınıfı bulmak için içe aktardığınız ad alanlarına bakabilir.When your code runs and encounters a class name, it can look in just the namespaces you've imported to find that class.

Web sayfalarını oluşturmak için ASP.NET Web Sayfalarını Razor sözdizimi ile kullandığınızda, genellikle WebPage sınıf, çeşitli yardımcılar ve benzeri dahil olmak üzere her seferinde aynı sınıf kümesini kullanırsınız.When you use ASP.NET Web Pages with Razor syntax to create web pages, you typically use the same set of classes each time, including the WebPage class, the various helpers, and so on. Bir web sitesi oluşturduğunuzher zaman ilgili ad alanlarını alma işini size kazandırmak için, ASP.NET yapılandırılır, böylece her web sitesi için bir dizi temel ad alanı otomatik olarak içeri aktarılır.To save you the work of importing the relevant namespaces every time you create a website, ASP.NET is configured so it automatically imports a set of core namespaces for every website. Bu yüzden isim alanları yla uğraşmak veya bugüne kadar içe aktarma yapmak zorunda kalmadınız; Birlikte çalıştığınız tüm sınıflar, sizin için zaten alınmış olan ad alanlarındadır.That's why you haven't had to deal with namespaces or importing up to now; all the classes you've worked with are in namespaces that are already imported for you.

Ancak, bazen sizin için otomatik olarak alınan bir ad alanında olmayan bir sınıfla çalışmanız gerekir.However, sometimes you need to work with a class that isn't in a namespace that's automatically imported for you. Bu durumda, bu sınıfın tam nitelikli adını kullanabilir veya sınıfı içeren ad alanını el ile içe aktarabilirsiniz.In that case, you can either use that class's fully-qualified name, or you can manually import the namespace that contains the class. Bir ad alanı almak için, using import makalenin önceki bir örneğinde gördüğünüz gibi deyimi (Visual Basic'te) kullanırsınız.To import a namespace, you use the using statement (import in Visual Basic), as you saw in an example earlier the article.

Örneğin, DataSet sınıf System.Data ad alanındadır.For example, the DataSet class is in the System.Data namespace. Ad System.Data alanı, ASP.NET Razor sayfalarında otomatik olarak kullanılamaz.The System.Data namespace is not automatically available to ASP.NET Razor pages. Bu nedenle, DataSet sınıfla tam nitelikli adını kullanarak çalışmak için aşağıdaki gibi kod kullanabilirsiniz:Therefore, to work with the DataSet class using its fully qualified name, you can use code like this:

var dataSet = new System.Data.DataSet();

DataSet Sınıfı tekrar tekrar kullanmanız gerekiyorsa, böyle bir ad alanını içe aktarabilir ve ardından kodda sadece sınıf adını kullanabilirsiniz:If you have to use the DataSet class repeatedly you can import a namespace like this and then use just the class name in code:

@using System.Data;
@{
    var dataSet = new DataSet();
    // etc.
}

Başvurmak istediğiniz using diğer .NET Framework ad alanları için ekstreler ekleyebilirsiniz.You can add using statements for any other .NET Framework namespaces that you want to reference. Ancak, birlikte çalışacağınız sınıfların çoğu .cshtml ve .vbhtml sayfalarında kullanılmak üzere ASP.NET tarafından otomatik olarak içe aktarılan ad alanlarında olduğundan, bunu sık sık yapmanız gerekmez.However, as noted, you won't need to do this often, because most of the classes that you'll work with are in namespaces that are imported automatically by ASP.NET for use in .cshtml and .vbhtml pages.

Web Sayfası İçinde Grafikleri GörüntülemeDisplaying Charts Inside a Web Page

Şimdiye kadar gördüğünüz örneklerde, bir grafik oluşturursunuz ve grafik doğrudan tarayıcıya grafik olarak işlenir.In the examples you've seen so far, you create a chart and then the chart is rendered directly to the browser as a graphic. Ancak, çoğu durumda, bir grafiği yalnızca tarayıcıda tek başına değil, bir sayfanın parçası olarak görüntülemek istersiniz.In many cases, though, you want to display a chart as part of a page, not just by itself in the browser. Bunu yapmak için iki adımlı bir işlem gerektirir.To do that requires a two-step process. İlk adım, daha önce gördüğünüz gibi grafiği oluşturan bir sayfa oluşturmaktır.The first step is to create a page that generates the chart, as you've already seen.

İkinci adım, elde edilen görüntüyü başka bir sayfada görüntülemektir.The second step is to display the resulting image in another page. Görüntüyü görüntülemek için, herhangi <img> bir görüntüyü görüntülemek için yaptığınız gibi bir HTML öğesi kullanırsınız.To display the image, you use an HTML <img> element, in the same way you would to display any image. Ancak, bir .jpg veya .png dosyasına <img> başvurmak yerine, öğe grafiği oluşturan Chart yardımcıyı içeren .cshtml dosyasına başvurur.However, instead of referencing a .jpg or .png file, the <img> element references the .cshtml file that contains the Chart helper that creates the chart. Görüntü sayfası çalıştığında, <img> öğe Chart yardımcının çıktısını alır ve grafiği işler.When the display page runs, the <img> element gets the output of the Chart helper and renders the chart.

  1. ShowChart.cshtmladlı bir dosya oluşturun.Create a file named ShowChart.cshtml.

  2. Varolan içeriği aşağıdakilerle değiştirin:Replace the existing content with the following:

    <!DOCTYPE html>
    <html>
      <head>
        <title>Chart Example</title>
      </head>
      <body>
        <h1>Chart Example</h1>
        <p>The following chart is generated by the <em>ChartArrayBasic.cshtml</em> file, but is shown
           in this page.</p>
        <p><img src="ChartArrayBasic.cshtml" /> </p>
      </body>
    </html>
    

    Kod, <img> ChartArrayBasic.cshtml dosyasında daha önce oluşturduğunuz grafiği görüntülemek için öğeyi kullanır.The code uses the <img> element to display the chart that you created earlier in the ChartArrayBasic.cshtml file.

  3. Web sayfasını tarayıcıda çalıştırın.Run the web page in a browser. ShowChart.cshtml dosyası, ChartArrayBasic.cshtml dosyasında bulunan kodu temel alan grafik görüntüsünü görüntüler.The ShowChart.cshtml file displays the chart image based on the code contained in the ChartArrayBasic.cshtml file.

Grafik OluşturmaStyling a Chart

Yardımcı, Chart grafiğin görünümünü özelleştirmenize izin veren çok sayıda seçeneği destekler.The Chart helper supports a large number of options that let you customize the appearance of the chart. Renkleri, yazı tiplerini, kenarlıkları ve benzerlerini ayarlayabilirsiniz.You can set colors, fonts, borders, and so on. Grafiğin görünümünü özelleştirmenin kolay bir yolu bir temakullanmaktır.An easy way to customize the appearance of a chart is to use a theme. Temalar, yazı tipleri, renkler, etiketler, paletler, kenarlıklar ve efektler kullanarak grafiğin nasıl işlendirilebildiğini belirten bilgi koleksiyonlarıdır.Themes are collections of information that specify how to render a chart using fonts, colors, labels, palettes, borders, and effects. (Grafiğin stilinin grafik türünü belirtmediğini unutmayın.)(Note that the style of a chart does not indicate the type of chart.)

Aşağıdaki tabloda yerleşik temalar listelenir.The following table lists built-in themes.

TemaTheme AçıklamaDescription
Vanilla Beyaz arka planda kırmızı sütunlar görüntüler.Displays red columns on a white background.
Blue Mavi degrade arka planda mavi sütunları görüntüler.Displays blue columns on a blue gradient background.
Green Yeşil degrade arka planda mavi sütunları görüntüler.Displays blue columns on a green gradient background.
Yellow Turuncu sütunları sarı degrade arka planda görüntüler.Displays orange columns on a yellow gradient background.
Vanilla3D Beyaz arka planda 3 B'lik kırmızı sütunlar görüntüler.Displays 3-D red columns on a white background.

Yeni bir grafik oluştururken kullanılacak temayı belirtebilirsiniz.You can specify the theme to use when you create a new chart.

  1. ChartStyleGreen.cshtmladlı yeni bir dosya oluşturun.Create a new file named ChartStyleGreen.cshtml.

  2. Sayfadaki varolan içeriği aşağıdakilerle değiştirin:Replace the existing content in the page with the following:

    @{
        var db = Database.Open("SmallBakery");
        var data = db.Query("SELECT Name, Price FROM Product");
        var myChart = new Chart(width: 600,
                            height: 400,
                            theme: ChartTheme.Green)
            .AddTitle("Product Sales")
            .DataBindTable(data, "Name")
            .Write();
    }
    

    Bu kod, veri veritabanını kullanan önceki örnekle aynıdır, theme ancak Chart nesneyi oluştururken parametreyi ekler.This code is the same as the earlier example that uses the database for data, but adds the theme parameter when it creates the Chart object. Değiştirilen kod aşağıda gösterilmektedir:The following shows the changed code:

    var myChart = new Chart(width: 600,
                        height: 400,
                        theme: ChartTheme.Green)
    
  3. Sayfayı tarayıcıda çalıştırın.Run the page in a browser. Öncekiyle aynı verileri görüyorsunuz, ancak grafik daha parlak görünüyor:You see the same data as before, but the chart looks more polished:

Grafik KaydetmeSaving a Chart

Bu makalede Chart şimdiye kadar gördüğünüz yardımcıyı kullandığınızda, yardımcı her çağrıldığında grafiği sıfırdan yeniden oluşturur.When you use the Chart helper as you've seen so far in this article, the helper re-creates the chart from scratch each time it's invoked. Gerekirse, grafiğin kodu da veritabanını yeniden sorgular veya verileri almak için XML dosyasını yeniden okur.If necessary, the code for the chart also re-queries the database or re-reads the XML file to get the data. Bazı durumlarda, sorguladığınız veritabanı büyükse veya XML dosyası çok fazla veri içeriyorsa, bunu yapmak karmaşık bir işlem olabilir.In some cases, doing this can be a complex operation, such as if the database that you're querying is large, or if the XML file contains a lot of data. Grafik çok fazla veri içermese bile, dinamik olarak görüntü oluşturma işlemi sunucu kaynaklarını kaplar ve birçok kişi grafiği görüntüleyen sayfa veya sayfaları isterse, web sitenizin performansı üzerinde bir etki olabilir.Even if the chart doesn't involve a lot of data, the process of dynamically creating an image takes up server resources, and if many people request the page or pages that display the chart, there can be an impact on the performance of your website.

Grafik oluşturmanın olası performans etkisini azaltmanıza yardımcı olmak için, ilk ihtiyacınız olduğunda bir grafik oluşturabilir ve ardından kaydedebilirsiniz.To help you reduce the potential performance impact of creating a chart, you can create a chart the first time you need it and then save it. Grafik yeniden gerekli olduğunda, yeniden oluşturmak yerine, sadece kaydedilen sürümü almak ve bu render.When the chart is needed again, rather than regenerating it, you can just fetch the saved version and render that.

Bir grafiği şu şekilde kaydedebilirsiniz:You can save a chart in these ways:

  • Grafiği bilgisayar belleğinde (sunucuda) önbelleğe getirin.Cache the chart in computer memory (on the server).
  • Grafiği görüntü dosyası olarak kaydedin.Save the chart as an image file.
  • Grafiği XML dosyası olarak kaydedin.Save the chart as an XML file. Bu seçenek, grafiği kaydetmeden önce değiştirmenize olanak tanır.This option lets you modify the chart before you save it.

Grafiği Önbelleğe AlmaCaching a Chart

Bir grafik oluşturduktan sonra, grafiği önbelleğe alabilirsiniz.After you've created a chart, you can cache it. Grafiği önbelleğe almak, yeniden görüntülenmesi gerekiyorsa yeniden oluşturulması gerekmediği anlamına gelir.Caching a chart means that it doesn't have to be re-created if it needs to be displayed again. Önbelleğe bir grafik kaydettiğinizde, bu grafiğe özgü olması gereken bir anahtar verirsiniz.When you save a chart in the cache, you give it a key that must be unique to that chart.

Sunucunun belleği az alıyorsa önbelleğe kaydedilen grafikler kaldırılabilir.Charts saved to the cache might be removed if the server runs low on memory. Ayrıca, uygulamanız herhangi bir nedenle yeniden başlatılırsa önbellek temizlenir.In addition, the cache is cleared if your application restarts for any reason. Bu nedenle, önbelleğe alınmış bir grafikle çalışmanın standart yolu, her zaman önce önbellekte kullanılabilir olup olmadığını denetlemek, değilse de oluşturmak veya yeniden oluşturmaktır.Therefore, the standard way to work with a cached chart is to always check first whether it's available in the cache, and if not, then to create or re-create it.

  1. Web sitenizin kökünde, ShowCachedChart.cshtmladlı bir dosya oluşturun.At the root of your website, create a file named ShowCachedChart.cshtml.

  2. Varolan içeriği aşağıdakilerle değiştirin:Replace the existing content with the following:

    <!DOCTYPE html>
    <html>
        <head>
            <title>Chart Example</title>
        </head>
    <body>
        <h1>Chart Example</h1>
        <img src="ChartSaveToCache.cshtml?key=myChartKey" />
        <p><a href="ClearCache.cshtml">Clear cache</a></p>
    </body>
    </html>
    

    Etiket, <img> src ChartSaveToCache.cshtml dosyasına işaret eden ve sayfaya bir anahtarı sorgu dizesi olarak aktaran bir öznitelik içerir.The <img> tag includes a src attribute that points to the ChartSaveToCache.cshtml file and passes a key to the page as a query string. Anahtar myChartKey ""değerini içerir.The key contains the value "myChartKey". ChartSaveToCache.cshtml dosyası, Chart grafiği oluşturan yardımcıyı içerir.The ChartSaveToCache.cshtml file contains the Chart helper that creates the chart. Bu sayfayı birazdan oluşturacaksınız.You'll create this page in a moment.

    Sayfanın sonunda ClearCache.cshtmladlı bir sayfanın bağlantısı var.At the end of the page there's a link to a page named ClearCache.cshtml. Bu, kısa süre içinde oluşturacağınız bir sayfadır.That's a page that you'll also create shortly. Önbelleğe alma yalnızca bu örnek için önbelleğe alma test etmek için ClearCache.cshtml gerekir - önbelleğe alınmış grafiklerle çalışırken normalde dahil edeceğiniz bir bağlantı veya sayfa değildir.You need the ClearCache.cshtml only to test caching for this example — it's not a link or page that you'd normally include when working with cached charts.

  3. Web sitenizin kökünde ChartSaveToCache.cshtmladlı yeni bir dosya oluşturun.At the root of your website, create a new file named ChartSaveToCache.cshtml.

  4. Varolan içeriği aşağıdakilerle değiştirin:Replace the existing content with the following:

    @{
        var chartKey = Request["key"];
        if (chartKey != null) {
            var cachedChart = Chart.GetFromCache(key: chartKey);
            if (cachedChart == null) {
                cachedChart = new Chart(600, 400);
                cachedChart.AddTitle("Cached Chart -- Cached at " + DateTime.Now);
                cachedChart.AddSeries(
                   name: "Employee",
                   axisLabel: "Name",
                   xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" },
                   yValues: new[] { "2", "6", "4", "5", "3" });
                cachedChart.SaveToCache(key: chartKey,
                   minutesToCache: 2,
                   slidingExpiration: false);
            }
            Chart.WriteFromCache(chartKey);
        }
    }
    

    Kod ilk olarak sorgu dizesinde anahtar değer olarak bir şey geçirilip geçirilemediğini denetler.The code first checks whether anything was passed as the key value in the query string. Bu nedenle, kod GetFromCache yöntemi çağırarak ve anahtarı geçirerek önbellek dışında bir grafik okumaya çalışır.If so, the code tries to read a chart out of the cache by calling the GetFromCache method and passing it the key. Önbellekte bu anahtarın altında hiçbir şey olmadığı ortaya çıkarsa (grafik ilk kez istendiğinde olur), kod grafiği her zamanki gibi oluşturur.If it turns out that there's nothing in the cache under that key (which would happen the first time that the chart is requested), the code creates the chart as usual. Grafik tamamlandığında, kod çağırarak SaveToCacheönbelleğe kaydeder.When the chart is finished, the code saves it to the cache by calling SaveToCache. Bu yöntem bir anahtar (böylece grafik daha sonra istenebilir) ve grafik önbellekte kaydedilmesi gereken süre gerektirir.That method requires a key (so the chart can be requested later), and the amount of time that the chart should be saved in the cache. (Bir grafiği tam olarak önbelleğe aldığınız süre, temsil ettiği verilerin ne sıklıkta değişebileceğini düşündüğünüze bağlıdır.) Yöntem, SaveToCache bu slidingExpiration doğru ayarlanmışsa — bir parametre gerektirir, zaman çizelgesi sayacı grafiğe her erişinde sıfırlanır.(The exact time you'd cache a chart would depend on how often you thought the data it represents might change.) The SaveToCache method also requires a slidingExpiration parameter — if this is set to true, the timeout counter is reset each time the chart is accessed. Bu durumda, geçerli olarak, grafiğin önbellek girişinin, birisi grafiğe en son eriştikten 2 dakika sonra sona erdiği anlamına gelir.In this case, it in effect means that the chart's cache entry expires 2 minutes after the last time someone accessed the chart. (Sürgülü son kullanma süresinin alternatifi mutlak son kullanma süresidir, yani önbellek girişi ne sıklıkta erişilmiş olursa olsun, önbelleğe alındıktan tam 2 dakika sonra sona erer.)(The alternative to sliding expiration is absolute expiration, meaning that the cache entry would expire exactly 2 minutes after it was put into the cache, no matter how often it had been accessed.)

    Son olarak, kod WriteFromCache önbellekten grafiği getirmek ve işlemek için yöntemi kullanır.Finally, the code uses the WriteFromCache method to fetch and render the chart from the cache. Bu yöntemin if önbelleği denetleyen bloğun dışında olduğunu unutmayın, çünkü grafiğin başlangıçta orada olup olmadığını veya oluşturulup önbelleğe kaydedilmesi gerekip gerekmediğini önbellekten alır.Note that this method is outside the if block that checks the cache, because it will get the chart from the cache whether the chart was there to begin with or had to be generated and saved in the cache.

    Örnekte, yöntembir AddTitle zaman damgası içerir dikkat edin.Notice that in the example, the AddTitle method includes a timestamp. (Geçerli tarih ve saati DateTime.Now — — başlığa ekler.)(It adds the current date and time — DateTime.Now — to the title.)

  5. ClearCache.cshtml adında yeni bir sayfa oluşturun ve içeriğini aşağıdakilerle değiştirin:Create a new page named ClearCache.cshtml and replace its content with the following:

    @{
        WebCache.Remove("myChartKey");
    }
    <!DOCTYPE html>
    <html lang="en">
      <body>
        <p>Cache has been cleared.</p>
        <p>Return to <a href="ShowCachedChart.cshtml">ShowCachedChart.cshtml</a></p>
      </body>
    </html>
    

    Bu sayfa, WebCache ChartSaveToCache.cshtmlönbelleğe alınmış grafiği kaldırmak için yardımcı kullanır.This page uses the WebCache helper to remove the chart that's cached in ChartSaveToCache.cshtml. Daha önce belirtildiği gibi, normalde böyle bir sayfa olması zorunda değilsiniz.As noted earlier, you don't normally have to have a page like this. Önbelleğe alma testini kolaylaştırmak için burada yaratıyorsun.You're creating it here only to make it easier to test caching.

  6. ShowCachedChart.cshtml web sayfasını tarayıcıda çalıştırın.Run the ShowCachedChart.cshtml web page in a browser. Sayfa, ChartSaveToCache.cshtml dosyasında bulunan kodu temel alan grafik görüntüsünü görüntüler.The page displays the chart image based on the code contained in the ChartSaveToCache.cshtml file. Zaman damgasının grafik başlığında ne yazdığına dikkat edin.Take note of what the timestamp says in the chart title.

    Açıklama: Grafik başlığında zaman damgası olan temel grafiğin resmi

  7. Tarayıcıyı kapatın.Close the browser.

  8. ShowCachedChart.cshtml'i yeniden çalıştırın.Run the ShowCachedChart.cshtml again. Zaman damgasının öncekiyle aynı olduğuna dikkat edin, bu da grafiğin yeniden oluşturulmadığını, bunun yerine önbellekten okunduğunu gösterir.Notice that the timestamp is the same as before, which indicates that the chart was not regenerated, but was instead read from the cache.

  9. ShowCachedChart.cshtml'de önbelleği temizle bağlantısını tıklatın.In ShowCachedChart.cshtml, click the Clear cache link. Bu, önbelleğin temizlendiğini bildiren ClearCache.cshtml'egötürür.This takes you to ClearCache.cshtml, which reports that the cache has been cleared.

  10. ShowCachedChart.cshtml bağlantısını döndür'e veya WebMatrix'ten ShowCachedChart.cshtml'i yeniden çalıştırmayı tıklatın.Click the Return to ShowCachedChart.cshtml link, or re-run ShowCachedChart.cshtml from WebMatrix. Önbellek temizlenmiş olduğundan, bu kez zaman damgasının değiştiğine dikkat edin.Notice that this time the timestamp has changed, because the cache has been cleared. Bu nedenle, kodun grafiği yeniden oluşturması ve önbelleğe geri koyması gerekiyordu.Therefore, the code had to regenerate the chart and put it back into the cache.

Grafiği Görüntü Dosyası Olarak KaydetmeSaving a Chart as an Image File

Ayrıca, bir grafiği sunucuya görüntü dosyası (örneğin, .jpg dosyası olarak) olarak kaydedebilirsiniz.You can also save a chart as an image file (for example, as a .jpg file) on the server. Daha sonra görüntü dosyasını herhangi bir görüntü gibi kullanabilirsiniz.You can then use the image file the way you would any image. Avantajı, dosyanın geçici bir önbelleğe kaydedilen yerine depolanmasıdır.The advantage is the file is stored rather than saved to a temporary cache. Yeni bir grafik görüntüsünü farklı zamanlarda (örneğin, her saat) kaydedebilir ve zaman içinde meydana gelen değişikliklerin kalıcı bir kaydını tutabilirsiniz.You can save a new chart image at different times (for example, every hour) and then keep a permanent record of the changes that occur over time. Web uygulamanızın görüntü dosyasını koymak istediğiniz sunucudaki klasöre bir dosya yı kaydetme izniolduğundan emin olmalısınız.Note that you must make sure that your web application has permission to save a file to the folder on the server where you want to put the image file.

  1. Web sitenizin kökünde, zaten yoksa * _ChartFiles* adında bir klasör oluşturun.At the root of your website, create a folder named _ChartFiles if it does not already exist.

  2. Web sitenizin kökünde ChartSave.cshtmladında yeni bir dosya oluşturun.At the root of your website, create a new file named ChartSave.cshtml.

  3. Varolan içeriği aşağıdakilerle değiştirin:Replace the existing content with the following:

    @{
        var filePathName = "_ChartFiles/chart01.jpg";
        if (!File.Exists(Server.MapPath(filePathName))) {
            var chartImage = new Chart(600, 400);
            chartImage.AddTitle("Chart Title");
            chartImage.AddSeries(
                    name: "Employee",
                    axisLabel: "Name",
                    xValue: new[] {  "Peter", "Andrew", "Julie", "Mary", "Dave" },
                    yValues: new[] { "2", "6", "4", "5", "3" });
            chartImage.Save(path: filePathName);
        }
    }
    <!DOCTYPE html>
    <html>
        <head>
            <title>Chart Example</title>
        </head>
        <body>
            <img src="@filePathName" />
        </body>
    </html>
    

    Kod ilk File.Exists olarak .jpg dosyasının yöntemi arayarak var olup olmadığını denetler.The code first checks to see whether the .jpg file exists by calling the File.Exists method. Dosya yoksa, kod bir diziden yeni Chart bir dosya oluşturur.If the file does not exist, the code creates a new Chart from an array. Bu kez, kod Save yöntemi çağırır path ve dosya yolunu ve grafiği nitaz dosya adını belirtmek için parametreyi geçer.This time, the code calls the Save method and passes the path parameter to specify the file path and file name of where to save the chart. Sayfanın gövdesinde, bir <img> öğe .jpg dosyasını görüntülemek için işaret etmek için yolu kullanır.In the body of the page, an <img> element uses the path to point to the .jpg file to display.

  4. ChartSave.cshtml dosyasını çalıştırın.Run the ChartSave.cshtml file.

  5. WebMatrix'e geri dön.Return to WebMatrix. Chart01.jpg adlı bir resim dosyasının * _ChartFiles* klasörüne kaydedildiğine dikkat edin.Notice that an image file named chart01.jpg has been saved in the _ChartFiles folder.

Grafiği XML Dosyası Olarak KaydetmeSaving a Chart as an XML File

Son olarak, bir grafiği sunucuya XML dosyası olarak kaydedebilirsiniz.Finally, you can save a chart as an XML file on the server. Bu yöntemi grafiği önbelleğe almak veya grafiği bir dosyaya kaydetmek yerine kullanmanın bir avantajı, isterseniz grafiği görüntülemeden önce XML'i değiştirebilmektir.An advantage of using this method over caching the chart or saving the chart to a file is that you could modify the XML before displaying the chart if you wanted to. Uygulamanız, görüntü dosyasını koymak istediğiniz sunucudaki klasör için okuma/yazma izinleri olması gerekir.Your application has to have read/write permissions for the folder on the server where you want to put the image file.

  1. Web sitenizin kökünde ChartSaveXml.cshtmladında yeni bir dosya oluşturun.At the root of your website, create a new file named ChartSaveXml.cshtml.

  2. Varolan içeriği aşağıdakilerle değiştirin:Replace the existing content with the following:

    @{
        Chart chartXml;
        var filePathName = "_ChartFiles/XmlChart.xml";
        if (File.Exists(Server.MapPath(filePathName))) {
            chartXml = new Chart(width: 600,
                                 height: 400,
                                 themePath: filePathName);
        }
        else {
            chartXml = new Chart(width: 600,
                                 height: 400);
            chartXml.AddTitle("Chart Title -- Saved at " + DateTime.Now);
            chartXml.AddSeries(
                name: "Employee",
                axisLabel: "Name",
                xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" },
                yValues: new[] { "2", "6", "4", "5", "3" });
            chartXml.SaveXml(path: filePathName);
        }
        chartXml.Write();
    }
    

    Bu kod, xml dosyası kullanması dışında önbellekte bir grafik depolamak için daha önce gördüğünüz koda benzer.This code is similar to the code that you saw earlier for storing a chart in the cache, except that it uses an XML file. Kod, File.Exists önce Yöntem'i arayarak XML dosyasının var olup olmadığını denetlemek için denetler.The code first checks to see whether the XML file exists by calling the File.Exists method. Dosya varsa, kod yeni Chart bir nesne oluşturur ve themePath dosya adını parametre olarak geçirir.If the file does exist, the code creates a new Chart object and passes the file name as the themePath parameter. Bu, XML dosyasında ne varsa grafiği oluşturur.This creates the chart based on whatever's in the XML file. XML dosyası zaten yoksa, kod normal gibi bir grafik oluşturur SaveXml ve sonra kaydetmek için çağırır.If the XML file doesn't already exist, the code creates a chart like normal and then calls SaveXml to save it. Grafik, daha önce Write gördüğünüz gibi yöntem kullanılarak işlenir.The chart is rendered using the Write method, as you've seen before.

    Önbelleğe alma gösteren sayfada olduğu gibi, bu kod grafik başlığında bir zaman damgası içerir.As with the page that showed caching, this code includes a timestamp in the chart title.

  3. ChartDisplayXMLChart.cshtml adında yeni bir sayfa oluşturun ve aşağıdaki işaretlemeyi ekleyin:Create a new page named ChartDisplayXMLChart.cshtml and add the following markup to it:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8" />
        <title>Display chart from XML</title>
      </head>
      <body>
        <img src="ChartSaveXML.cshtml" />
      </body>
    </html>
    
  4. ChartDisplayXMLChart.cshtml sayfasını çalıştırın.Run the ChartDisplayXMLChart.cshtml page. Grafik görüntülenir.The chart is displayed. Grafiğin başlığındaki zaman damgasını dikkate alın.Take note of the timestamp in the chart's title.

  5. Tarayıcıyı kapatın.Close the browser.

  6. WebMatrix'te * _ChartFiles* klasörünü sağ tıklatın, Yenile'yitıklatın ve ardından klasörü açın.In WebMatrix, right-click the _ChartFiles folder, click Refresh, and then open the folder. Bu klasördeki XMLChart.xml dosyası Chart yardımcı tarafından oluşturuldu.The XMLChart.xml file in this folder was created by the Chart helper.

    Açıklama: Grafik yardımcısı tarafından oluşturulan XMLChart.xml dosyasını gösteren _ChartFiles klasörü.

  7. ChartDisplayXMLChart.cshtml sayfasını yeniden çalıştırın.Run the ChartDisplayXMLChart.cshtml page again. Grafik, sayfayı ilk çalıştırdığınız da aynı zaman damgasını gösterir.The chart shows the same timestamp as the first time you ran the page. Bunun nedeni, grafiğin daha önce kaydettiğiniz XML'den oluşturulmasıdır.That's because the chart is being generated from the XML you saved earlier.

  8. WebMatrix'te * _ChartFiles* klasörünü açın ve XMLChart.xml dosyasını silin.In WebMatrix, open the _ChartFiles folder and delete the XMLChart.xml file.

  9. ChartDisplayXMLChart.cshtml sayfasını bir kez daha çalıştırın.Run the ChartDisplayXMLChart.cshtml page once more. Chart Bu kez, yardımcıxXML dosyasını yeniden oluşturmak zorunda olduğundan, zaman damgası güncelleştirilir.This time, the timestamp is updated, because the Chart helper had to recreate the XML file. İstersen, * _ChartFiles* klasörünü kontrol edin ve XML dosyasının geri döndüğünü fark edin.If you want, check the _ChartFiles folder and notice that the XML file is back.

Ek KaynaklarAdditional Resources