Aracılığıyla paylaş


Sunucudaki Belgelerde Verilere Erişme

Microsoft Office Word veya Microsoft Office Excel'in nesne modelini kullanmak durumunda kalmadan bir belge düzeyi özelleştirmesindeki verilere dayalı programlama yapabilirsiniz.Bu, Word veya Excel yüklü olmayan bir sunucu üzerindeki bir belgede yer alan verilere erişebileceğiniz anlamına gelir.Mesela, bir sunucudaki (örn. bir ASP.NET sayfası) kod bir belgedeki verileri özelleştirebilir ve özelleşmiş belgeyi bir son kullanıcıya gönderebilir.Son kullanıcı belgeyi açtığı zaman, çözüm derlemesindeki verileri bağlayan kod özelleştirilmiş veriyi belgeye bağlar.Bu, belgedeki verilerin kullanıcı arayüzünden ayrı olması nedeniyle mümkündür.Daha fazla bilgi için bkz. Belge Düzeyi Özelleştirmelerdeki Önbelleğe Alınmış Veriler.

Uygulama hedefi: Bu konudaki bilgiler, şu uygulamalar için belge düzeyi projelere yöneliktir. Excel 2013 ve Excel 2010; Word 2013 ve Word 2010. Daha fazla bilgi edinmek için, bkz. Office Uygulaması ve Proje Türüne Göre Kullanılabilir Özellikler.

Sunucuda Kullanmak İçin Veriyi Önbelleğe Alma

Belgedeki bir veri nesnesini önbelleğe almak için tasarım zamanında onu CachedAttribute özniteliğiyle işaretleyin veya çalışma zamanında bir konak öğesinin StartCaching yöntemini kullanın.Belgedeki bir veri nesnesini önbelleğe aldığınızda, Office çalışma zamanı için Visual Studio Araçları nesneyi belgede saklanan XML dizgisi içerisine sıralar.Nesnelerin önbelleğe alınabilmesi için belirli gereksinimleri karşılaması gerekir.Daha fazla bilgi için bkz. Verileri Önbelleğe Alma.

Sunucu tarafı kodu veri önbelleğindeki tüm veri nesnelerini değiştirebilir.Önbelleğe alınmış veri olgularına bağlı denetimler kullanıcı arabirimiyle eşzamanlı hale getirilir ki verilere sunucu tarafından yapılan değişiklikler istemcide belge açıldığı zaman otomatik olarak gösterilsin.

Önbellekteki Verilere Erişim

Office dışındaki uygulamalardan (örn. konsol uygulaması, Windows Forms uygulaması veya Web sitesi) önbellekteki verilere erişebilirsiniz.Önbellekteki verilere erişen uygulamanın tam güvene sahip olması gerekir. Kısmi güvene sahip bir Web uygulaması Office belgesinde önbelleğe alınmış bir veriler üzerinde ekleme, alma veya değiştirme işlemleri yapamaz.

Veri önbelleği, ServerDocument sınıfının CachedData özelliği tarafından kullanıma sunulan bir koleksiyon hiyerarşisi aracılığıyla erişilebilirdir.

Aşağıdaki kod örneğinde, bir Excel çalışma kitabı projesinin Sheet1 sınıfında önbelleğe alınmış bir dizgiye nasıl erişileceği gösterilmektedir.Bu örnek, ServerDocument.Save yöntemi için verilen daha büyük bir örneğin bir bölümüdür.

serverDocument1 = New ServerDocument(documentPath)
Dim hostItem1 As CachedDataHostItem = _
    serverDocument1.CachedData.HostItems("ExcelWorkbook1.Sheet1")
Dim dataItem1 As CachedDataItem = hostItem1.CachedData("CachedString")
serverDocument1 = new ServerDocument(documentPath);
CachedDataHostItem hostItem1 = 
    serverDocument1.CachedData.HostItems["ExcelWorkbook1.Sheet1"];
CachedDataItem dataItem1 = hostItem1.CachedData["CachedString"];

Önbellekteki Verileri Değiştirme

Önbelleğe alınmış bir veri nesnesini değiştirmek için genellikle aşağıdaki adımlar gerçekleştirilir:

  1. Önbelleğe alınmış nesnenin XML gösterimini sıralı halden nesnenin yeni bir olgusuna çevirin.XML'e önbelleğe alınmış veri nesnesini temsil eden CachedDataItem öğesinin Xml özelliğini kullanarak erişebilirsiniz.

  2. Bu kopyaya değişiklikleri yapın.

  3. Değiştirilmiş nesneyi aşağıdaki seçeneklerden birini kullanarak veri önbelleğine geri sıralayın:

    • Değişiklikleri otomatik olarak sıralamak istiyorsanız, SerializeDataInstance yöntemini kullanın.Bu yöntem veri önbelleğindeki DataSet'i, DataTable'ı ve typed dataset (türü belirtilmiş veri kümesi) nesnelerini sıralamak için DiffGram biçimini kullanır.DiffGram biçimi çevrimdışı bir belgede veri önbelleğine yapılan değişikliklerin sunucuya doğru olarak gönderilmesini sağlar.

    • Önbellek verilerindeki değişiklikler için kendi sıralamanızı gerçekleştirmek istiyorsanız, doğrudan Xml özelliğine yazabilirsiniz.Eğer DataSet, DataTable veya türü belirtilmiş veri kümesinindeki verileri değiştirilmiş veritabanını güncellemek için bir DataAdapter öğesi kullanırsanız DiffGram biçimini belirleyin.Aksi takdirde DataAdapter, var olan satırları değiştirmek yerine yeni satır ekleyerek veritabanını güncelleyecektir.

Geçerli Değeri Sıralı Halden Geri Çevirmeden Veriyi Değiştirme

Bazı durumlarda, geçerli değeri sıralı halden geri çevirmeden önbelleğe alınmış nesnenin değerini değiştirmek isteyebilirsiniz.Örneğin, dizgi ya da tamsayı gibi basit bir türe sahip bir nesnenin değerini değiştirirken veya sunucu üzerindeki bir belgede önbelleğe alınmış bir DataSet'i başlatırken bunu yapabilirsiniz.Bu durumlarda, ilk olarak önbelleğe alınmış nesnenin geçerli değerini sıralı halden geri çevirmeden SerializeDataInstance yöntemini kullanabilirsiniz.

Aşağıdaki kod örneğinde, bir Excel çalışma kitabı projesinin Sheet1 sınıfında önbelleğe alınmış bir dizginin değerinin nasıl değiştirileceği gösterilmektedir.Bu örnek, ServerDocument.Save yöntemi için verilen daha büyük bir örneğin bir bölümüdür.

serverDocument1 = New ServerDocument(documentPath)
Dim hostItem1 As CachedDataHostItem = _
    serverDocument1.CachedData.HostItems("ExcelWorkbook1.Sheet1")
Dim dataItem1 As CachedDataItem = hostItem1.CachedData("CachedString")

If dataItem1 IsNot Nothing AndAlso _
    Type.GetType(dataItem1.DataType).Equals(GetType(String)) Then

    dataItem1.SerializeDataInstance("This is the new cached string value.")
    serverDocument1.Save()
End If
serverDocument1 = new ServerDocument(documentPath);
CachedDataHostItem hostItem1 = 
    serverDocument1.CachedData.HostItems["ExcelWorkbook1.Sheet1"];
CachedDataItem dataItem1 = hostItem1.CachedData["CachedString"];

if (dataItem1 != null &&
    Type.GetType(dataItem1.DataType) == typeof(string))
{
    dataItem1.SerializeDataInstance("This is the new cached string value.");
    serverDocument1.Save();
}

Önbellekteki Boş Değerleri Değiştirme

Veri önbelleği belge kaydedilip kapatıldığında null değeri olan nesneleri saklamaz.Bu sınırlamanın önbellekteki verileri değiştirdiğiniz zaman bazı sonuçları vardır:

  • Veri önbelleğindeki herhangi bir nesneye null değerini atarsanız veri önbelleğindeki tüm nesneler belge açıldığında otomatik olarak null değerini alır ve belge kaydedilip kapatıldığında tüm veri önbelleği temizlenir.Yani, önbelleğe alınmış tüm nesneler veri önbelleğinden kaldırılır ve CachedData koleksiyonu boşalır.

  • Veri önbelleğinde null nesneleri olan bir çözüm yapılandırırsanız ve belge ilk kez açılmadan önce bu nesneleri ServerDocument sınıfını kullanarak başlatmak istiyorsanız, veri önbelleğindeki tüm nesneleri başlattığınızdan emin olun.Nesnelerin sadece bazısını başlatırsanız, tüm nesneler belge açıldığında null değerini alır ve belge kaydedilip kapatıldığında tüm veri önbelleği temizlenir.

Önbellekteki Türü Belirtilmiş Veri Kümelerine Erişme

Türü belirtilmiş bir veri kümesindeki verilere hem bir Office çözümünden hem de Windows Forms uygulaması ya da ASP.NET projesi gibi Office'in dışarısındaki bir uygulamadan erişmek isterseniz, türü belirtilmiş veri kümesini iki projenin de başvurduğu ayrı bir derlemede tanımlamalısınız.Türü belirtilmiş veri kümesini her projeye Veri Kaynağı Yapılandırma Sihirbazı'nı veya Veri Kümesi Tasarımcısı'nı kullanarak eklerseniz, .NET Framework iki projedeki türü belirtilmiş veri kümesine farklı türler olarak davranır.Türü belirtilmiş veri kümelerini oluşturma hakkında daha fazla bilgi için, bkz. Nasıl yapılır: Türü Belirtilmiş Veri Kümesi Oluşturma.

Ayrıca bkz.

Kavramlar

Sunucudaki Belgelerde Verilere Erişme

Belge Düzeyi Özelleştirmelerdeki Önbelleğe Alınmış Veriler