Bu yazımda sizlere Xml dosyasından veriyi çekerek datagriedview’e verimizi yansıtmak olacaktır. Verimizi yansıtabilme veya ekleyebilmek için LINQ kullanarak kayıt ekleme, listeleme, güncelleme ve silme gibi işlemler gerçekleştirerek başarılı bir şekilde xml dosyası üzerinde değişiklikler yapacağız. Öncelikle Visual Studio’ dan Form uygulaması oluşturuyoruz. Form’da aşağıda bulunan görseldeki gibi tasarımını gerçekleştiriyoruz.
Tasarımını yaptıktan sonra bir sonraki aşamaya geçiyoruz. Aşağıda ki gibi Xml dosyamızın içeriğini oluşturuyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?xml version="1.0" encoding="utf-8"?> <Araclar> <Arac> <aracno>1</aracno> <plaka>34YR5671</plaka> <markasi>Ferrari</markasi> <adi>Burak</adi> <soyadi>Onaran</soyadi> </Arac> <Arac> <aracno>2</aracno> <plaka>34IBO3263</plaka> <markasi>BMW</markasi> <adi>Ibrahim</adi> <soyadi>Kulekci</soyadi> </Arac> <Arac> <aracno>3</aracno> <plaka>34MMT6224</plaka> <markasi>Mercedes</markasi> <adi>Mehmet</adi> <soyadi>Pak</soyadi> </Arac> </Araclar> |
Xmlİslemleri.xml ismi ile projemizin bulunduğu bin klasörü altında bulunan debug klasörü içine kaydediyoruz. Sonraki aşamada ise Form’un code behind kısmına aşağıdaki kod referanslarını ekliyoruz.
1 2 |
using System.Xml; using System.Xml.Linq; |
Sonra listele adında bir method oluşturup listele butonuna methodumuzu çağırıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
private void button1_Click(object sender, EventArgs e) { listele(); } void listele() { XmlDocument xml = new XmlDocument(); DataSet ds = new DataSet(); XmlReader xmlOku; xmlOku = XmlReader.Create(@"Xmlislemleri.xml", new XmlReaderSettings()); ds.ReadXml(xmlOku); dataGridView1.DataSource = ds.Tables[0]; xmlOku.Close(); } |
Burada buton1′ e tıklanıldığında listeleme işlemini gerçekleştirmekteyiz. Xml dosyasını okumak için bir XmlReader oluşturuyoruz. Okuma işlemini gerçekleştirdikten sonra xml’den alınan içeriği datasetimize aktarıyoruz. Datagridview’in kaynağınıda dataset’i göstermekteyiz. Şimdi ise kaydet butonumuza geçelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
private void button2_Click(object sender, EventArgs e) { XDocument xml = new XDocument(@"Xmlislemleri.xml"); xml.Element("Araclar").Add( new XElement("Arac", new XElement("aracno", textBox5.Text), new XElement("plaka", textBox1.Text), new XElement("markasi", textBox2.Text), new XElement("adi", textBox3.Text), new XElement("soyadi", textBox4.Text) )); xml.Save(@"Xmlislemleri.xml"); listele(); } |
Görüldüğü gibi buton2’e tıklanıldığında gerçekleşecek işlemler bulunmaktadır. Araclar etiketi altında bulunan araclar içine veriyi textbox’lardan girilen verilere göre kaydetme işlemini gerçekleştirmektedir. Şimdi ise güncelleme işlemimize geçelim..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
private void button3_Click(object sender, EventArgs e) { XDocument xml = XDocument.Load(@"Xmlislemleri.xml"); XElement node = xml.Element("Araclar").Elements("Arac").FirstOrDefault(a => a.Element("aracno").Value.Trim() == textBox5.Text); if (node != null) { node.SetElementValue("plaka", textBox1.Text); node.SetElementValue("markasi", textBox2.Text); node.SetElementValue("adi", textBox3.Text); node.SetElementValue("soyadi", textBox4.Text); xml.Save(@"Xmlislemleri.xml"); listele(); } } |
Datagridview’den girilen veriler textbox’dan girilen verilerin aracno’ları aynı olup sadece değişecek olan alanlar farklı ise güncelle butonumuza tıkladığımızda güncelleme işlemini gerçekleştirecektir. Şimdi ise son olarak silme işlemimize geçelim.
1 2 3 4 5 6 7 |
private void button4_Click(object sender, EventArgs e) { XDocument xml = XDocument.Load(@"Xmlislemleri.xml"); xml.Root.Elements().Where(a => a.Element("aracno").Value == textBox5.Text).Remove(); xml.Save(@"Xmlislemleri.xml"); listele(); } |
Burada xml’de bulunan aracno’su verisini textbox’a aynı girdiğimizde o veriyi datagridview’den silme işlemini gerçekleştiriyor. Faydalı olduğumu düşünerek şimdiden kolay gelsin diyorum… 🙂
ali
xml den sonra angularjs ile devam etmeni bekliyoruz.
burakonrn22
Kısa zamanda o eğitimlere de geçmeyi planlamaktayım. 🙂
Nuri
Bilgileriniz için teşekkürler çok işime yaradı…