18 Ağustos 2010 Çarşamba

ReportViewer'da Her Bir Veri Satırını Ayrı Sayfada Gösterme

ReportViewer'ın datasource'ına eklenen her bir satırın (yani dataset'in her bir datarow'unun) ayrı birer sayfada görünmesini istiyorsanız;
  • Raporunuz içindeki elemanları Toolbox'daki List kontrolünün içine koyun.
  • List ekleyince en altta row groups açılıyor. Buradan group properties'e girerek gruplama özelliklerini belirleyebilirsiniz.
Bu şekilde istediğim sonuca ulaştım, fakat çözemediğim bazı sorunlar var. Geliştirme ortamım VS2010. Her kaydın arasına boş bir sayfa ekliyor. Bir de group properties içinde sort özelliği var, eklemek istedim fakat hata vererek izin vermedi. Bunların da çözümlerini bulabilirsem paylaşacağım..


14 Temmuz 2010 Çarşamba

Windows Servis Uygulamasında HttpWebResponse Alma

Daha önce Windows uygulaması olarak yazdığım kodları Windows servise geçirince response boş geliyordu. Örnek kodlar aşağıdadır:


   1:  HttpWebRequest wreq = (HttpWebRequest)System.Net.WebRequest.Create(url);
   2:  System.Net.WebProxy pry = new System.Net.WebProxy("x.x.x.x", 80);
   3:  pry.Credentials = System.Net.CredentialCache.DefaultCredentials;
   4:   
   5:  wreq.Proxy = pry;
   6:  wreq.Method = "GET";
   7:  wreq.Timeout = 3000;
   8:  HttpWebResponse wr = (HttpWebResponse)wreq.GetResponse();
   9:  if (wr.StatusCode == System.Net.HttpStatusCode.OK)
  10:  {
  11:      System.IO.Stream s = wr.GetResponseStream();
  12:      System.Text.Encoding enc = System.Text.Encoding.GetEncoding("windows-1254");
  13:      System.IO.StreamReader readStream = new System.IO.StreamReader(s, enc);
  14:      result = readStream.ReadToEnd();
  15:  }

Bunun sebebi windows formda user account'ının, windows serviste ise network account'ının kullanılmasıymış. Çözüm için, ProjectInstaller.cs içindeki serviceProcessInstaller özelliklerinden Account özelliğini "User" olarak değiştirmek gerekiyor.

1 Haziran 2010 Salı

HTTP 404.17 Not Found Hatası

Web site projesine WCF Servisi ekleyip, gerekli işlemleri yaptıktan sonra, Gözat dediğimde HTTP 404.17 hatası alıyordum. IIS üzerinden açmak istediğimde de sonuç değişmedi. Bir araştırma sonucunda çözümü buldum. Bu arada projem framework 3.5 versiyonunda.
VS2008 Command Prompt’u açtıktan sonra C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation altındaki ServiceModelReg.exe dosyasını sürekleyip command prompta bırakıyoruz ve –i yazıp çalıştırıyoruz:
“ C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe” –i
Sanırım sorun, visual studio IIS’den önce yüklenince WCF bileşenlerinin yüklenmemesinden kaynaklanıyormuş.

27 Nisan 2010 Salı

ReportViewer'da Textbox İçine Boşluk Karakteri Yazma

.Net içindeki ReportViewer'da rapor oluştururken yazıları göstermek için textbox'lar kullanıyoruz. Fakat 1 karakterden fazla olan boşluklara otomatik olarak trim yapıp, 1 karaktere indiriyor. Örneğin yazıya paragraf başı koymak istediğimizde bu sorun oluşuyordu. Çözümü şu şekildeymiş:

6 Nisan 2010 Salı

Sql Server'da Değişiklikleri Kaydetme Sorunu

SQL Server 2008'i ilk kurduktan sonra, tablolarda yaptığım her değişiklikte kaydederken Post-Save Notifications hatası vermeye başladı. "Errors were encountered during the save process. Some database objects were not saved." Hiç bir değişikliği kabul etmiyordu. Hatanın ekran görünütüsü aşağıda:


5 Şubat 2010 Cuma

Generic List<T> Sıralama

Elimizde bir nesnemiz olsun. Örneğin doküman bilgilerini tutan DocumentInfo gibi.

public class DocumentInfo {       
       
 public string documentName;      
 public string documentId;
}
Bir de DocumentInfo nesnelerinden oluşan bir listemiz var.
List<DocumentInfo> documentList = new List<DocumentInfo>();
Bu listeyi doküman isimlerine göre (documentName) sıralamak istiyoruz. Şu şekilde yapabiliriz:

documentList.Sort(delegate(DocumentInfo document1, DocumentInfo document2)
          {
              return document1.documentName.CompareTo(document2.documentName);
          });

3 Şubat 2010 Çarşamba

ListView’de EnsureVisible

Belki bilinen bir metottur ama ben yeni öğrendim ve benim için güzel bir püf noktası oldu. ListView’e yeni bir item eklediğimizde scroll’un aşağı kaymasını sağlıyor.
ListViewItem item = new ListViewItem("x");
item.EnsureVisible();

Yeni bir item ekledik ve satırı bir aşağı kaydırdık. Ben bu metodu item için kullandım, fakat listview için de şöyle bir kullanımı varmış:

ListView myListView = new ListView();
myListView.EnsureVisible(myListView.Items.Count - 1);

Bunun farkı parametre olarak index değerini alması. Hangi satıra kaymasını istiyorsanız o satırın index değerini 
yazıyorsunuz. Yukarıdaki örnekte scroll en alttaki item’a kayacaktır.

28 Ocak 2010 Perşembe

Generic Listede Case Insensitive Arama

Herhangi bir eleman generic listede var mı diye kontrol ederken, büyük-küçük harfi önemsemeden kontrol etmek istiyorsak bunu nasıl yapabiliriz? Bir örnek verecek olursak;

List<string> imageFormats =
new List<string>() { "bmp", "png", "gif", "jpg", "jpeg" };

Resim formatlarını yazdığımız bu listede bu uzantılar büyük harflerle de yazılmış olabilir. Herhangi bir dosyaya resim formatında mı diye bakmak istediğimizde hata alırız. Bunu aşağıdaki gibi Contains metoduna parametre ekleyerek çözebiliriz:

private bool isImageFormat(string extension) { List<string> imageFormats =
            new List<string>() { "bmp", "png", "gif", "jpg", "jpeg" };
            return imageFormats.Contains (extension, StringComparer.OrdinalIgnoreCase);
}