.NET içinde Alanlarla Nasıl Çalışılır

.NET içinde Alanlarla Nasıl Çalışılır

Bu kılavuz, Word alanları — DATE, IF, REF, DATABASE ve onlarca diğer — Aspose.Words FOSS for .NET içinde nasıl çalışılacağını gösterir: bir alan ekleme ve sonucunu okuma, programatik bir düzenlemeden sonra alanları güncelleme, güncelleme davranışını yapılandırma, bir geri arama ile güncellemeleri izleme ve bir alanı dönüştürme veya kaldırma. Aspose.Words FOSS for .NET, NuGet üzerinden veya kaynak koddan derlenerek temin edilebilir.

Adım Adım Kılavuz

Adım 1: Kütüphaneyi Edinin

Depoyu klonlayın ve derleyin Aspose.Words.sln Release yapılandırmasında, ardından bir proje referansı ekleyin Aspose.Words.csproj kendi .NET projenizden, aşağıdaki gibi açıklanan Kurulum kılavuzu. Ekleyin using Aspose.Words; and using Aspose.Words.Fields; alanlarla çalışan herhangi bir dosyanın en üstüne.


Adım 2: Bir Alan Ekleyin ve Sonucunu Okuyun

DocumentBuilder.InsertField(), imleçte yeni bir alan ekler; aşırı yüklemeler, alanın sonucunu hemen güncelleyebilir ya da sonraki bir güncelleme turuna bırakabilir. Her alan, üç işaretçi düğümden oluşan bir Field örneğidir — FieldStart, Separator ve FieldEnd, Field.Start / Field.Separator / Field.End olarak ortaya çıkar. Field.Type, temsil ettiği FieldType‘i tanımlar, Field.Result ve Field.DisplayResult son hesaplanan değeri tutar, Field.Format koda eklenmiş herhangi bir format anahtarını tutar ve Field.GetFieldCode() ham alan kodu metnini döndürür.


Adım 3: Programatik Bir Düzenlemeden Sonra Alanları Güncelle

Aspose.Words FOSS, belge yüklendiğinde veya kaydedildiğinde alanları yeniden hesaplamaz. Bir alanın sonucunu değiştirmesi gereken bir düzenlemeden sonra, bu aralıktaki tüm alanları yeniden hesaplamak için Range.UpdateFields() çağırın — tüm belge için Document.Range.UpdateFields() kullanın — ya da tek bir alan için Field.Update(). Range.UnlinkFields() tek bir çağrıda aralıktaki tüm alanları statik metne dönüştürür ve Range.NormalizeFieldTypes(), manuel bir düzenlemeden sonra bir alanın depolanan tip kodunu gerçek alan kodu ile uzlaştırır.


Adım 4: FieldOptions ile Alan Güncelleme Davranışını Yapılandır

Document.FieldOptions (bir FieldOptions örneği), bir güncelleme sırasında belgenin tüm alanlarının nasıl davranacağını belirler: CurrentUser (bir UserInformation örneği — Name, Initials, Address) yazar ve kullanıcı adıyla ilgili alanların okuduğu kimliği sağlar, DefaultDocumentAuthor yazarla ilgili sonuçları başlatır ve LegacyNumberFormat / UseInvariantCultureNumberFormat / PreProcessCulture / FieldUpdateCultureSource sayı ve tarih biçimlendirmesini kontrol eder. Denetimsiz işlem hatları için, FieldOptions.UserPromptRespondent (bir IFieldUserPromptRespondent) atayın, böylece ASK ve FILLIN gibi istem tabanlı alanlar etkileşimli girdi bekleyerek engellemez, ve FieldOptions.FieldDatabaseProvider‘ye özel bir IFieldDatabaseProvider atayarak DATABASE alanının satırlarını gerçek bir veritabanı bağlantısı yerine kendi veri kaynağınızdan temin edin.


Adım 5: Geri Çağırma ile Alan Güncellemelerini İzle

Implement IFieldUpdatingCallback (FieldUpdating ve FieldUpdated) ve FieldOptions‘e atayarak her alan yeniden hesaplanmadan hemen önce ve sonra kod çalıştırın — toplu işte tam olarak hangi alanların değiştiğini denetlemek için kullanışlıdır. Büyük bir belge boyunca ilerleme raporlaması için, IFieldUpdatingProgressCallback (Notify) uygulayın; bu, TotalFieldsCount, UpdatedFieldsCount ve UpdateCompleted‘i ortaya çıkaran bir FieldUpdatingProgressArgs alır.


Adım 6: Bir Alanı Dönüştür veya Kaldır

Field.Unlink(), alanı son hesaplanmış sonucuyla sıradan statik metin olarak değiştirir, altta yatan alan kodunu atar — değeri belgeye kalıcı olarak yerleştirmek istediğinizde kullanın. Field.Remove(), FieldStart, Separator ve FieldEnd düğümlerini alanın kodu ve sonucu ile birlikte siler, alanı tamamen kaldırır. Alanın yapısının yalnızca bir kısmını manuel olarak kaldırmak belge ağacını tutarsız bırakabileceği için işaretçi düğümleri doğrudan silmek yerine bu iki yöntemi tercih edin.

Yaygın Sorunlar ve Çözümler

Bir alanın görüntülenen sonucu, belgeyi düzenledikten sonra güncel değildir. Aspose.Words FOSS, yükleme veya kaydetme sırasında alanları otomatik olarak güncellemez. Çağırın Range.UpdateFields() or Field.Update() düzenlemeden sonra açıkça.

PAGE, NUMPAGES, ya da içindekiler sayfa numarası her zaman gösterilir 0. Page-layout/rendering bu sürümün bir parçası değildir, bu nedenle sayfalandırmaya bağlı sonuç veren alanlar yer tutucu olarak değerlendirilir 0. Bu davranış bu sürümde beklenendir.

Bir toplu alan güncellemesi takılmış gibi görünüyor. Prompt-tabanlı bir alan (ASK, FILLIN) yok IFieldUserPromptRespondent atanmış. Ata FieldOptions.UserPromptRespondent, ya da ayarla DefaultResponse bireysel alan örneği üzerinde.

Bu DATABASE alan hiçbir satır üretmez. Hayır IFieldDatabaseProvider atanmıştır FieldOptions.FieldDatabaseProvider. Arabirimi uygulayın ve çağırmadan önce atayın Range.UpdateFields().

Sıkça Sorulan Sorular

Aspose.Words FOSS, her Word alan tipini değerlendiriyor mu?

Field nesne modeli her FieldType değerini temsil eder ve çoğunu günceller, ancak sonucunun sayfa düzenine bağlı olduğu alanlar — PAGE ve NUMPAGES gibi — bu sürümde düzen/render motoru bulunmadığı için bir yer tutucu 0 olarak değerlendirilir.

Programatik bir düzenlemeden sonra alanları nasıl yeniden değerlendirebilirim?

Düzenlenen içeriği kapsayan aralıkta Range.UpdateFields() çağırın veya tüm belge için Document.Range.UpdateFields() kullanın.

Bir alanı düz, statik metne dönüştürebilir miyim?

Evet — Field.Unlink(), alanı son hesaplanan sonucunu sıradan metin olarak değiştirir.

Bir alanı sonucuyla birlikte tamamen nasıl kaldırabilirim?

Field.Remove() çağırın. FieldStart, Separator ve FieldEnd düğümlerini, alanın kodu ve sonuç içeriğiyle birlikte siler.

Özel verileri DATABASE alanına nasıl sağlayabilirim?

Implement IFieldDatabaseProvider ve Document.FieldOptions.FieldDatabaseProvider‘e atayın. GetQueryResult() uygulaması, FieldDatabaseDataRow örneklerinden oluşturulan bir FieldDatabaseDataTable döndürür.

Ayrıca Bakınız

 Türkçe