• Home
  • Contact
  • video
  • links
  • rss
  • rss

Archive for the ‘Devexpress’ Category

yytoolkit

Xml dosyalarını excel yada başka bir dosya tipine anlamlı bir şekilde çevirmek için yazdığım Xml Exporter i aşağıdaki linkten kurabilirsiniz. Programla ilgili öneri ve hata bildirimlerini bu yazıya yorum olarak ekleyebilirsiniz.

XmlExporter i indir

20
Eki

Devexpress AspxGridView – InitNewRow

   Posted by: Yılmaz Yavuz Tags: , , ,

Asp.net Gridview üzerinde yeni bir kayıt eklerken varsayılan değerleri server-side olarak belirlemeye yarayan bu Event’ın kullanımı şu şekildedir :

protected void dxgridBlogOrnek_InitNewRow(object sender, DevExpress.Web.Data.ASPxDataInitNewRowEventArgs e)
{
e.NewValues["FieldName"] = 15;
}

Burda dikkat edilmesi gereken nokta FieldName olarak belirttiğimiz kolon un EditForm üzerinde görünüyor olması gerekmekte, yani visible ını false yaptığımız bir column a verdiğimiz değer malesef kaydedilmiyor.

Get the Flash Player to see this player.

Video Devexpress in en çok kullanılan kontrölü olan GridControl ile Müşteri-Satışlar tablolarının master-child gösteriminin en baştan itibaren nasıl yapılacağını anlatmaktadır. Ayrıca grid üzerinden filtreleme, yeni kayıt girme, gruplama gibi fonksiyonlarına biraz değinilmiştir.

Get the Flash Player to see this player.

Video sonsuz kategori mantığının bir tablo üzerinde uygulanması ve Devex TreeList i üzerinde gösterimini anlatmaktadır. Ayrıca çok kısa bir şekilde foreignkey lerin işlevinede değinilmiştir.

Video ile ilgili örnek daha sonra eklenecektir.

19
Haz

Devexpress – VerticalGrid FocusedRecord

   Posted by: Yılmaz Yavuz Tags: , ,

Vertical grid üzerindeki seçili kaydı almak istiyorsanız şu şekilde yapabilirsiniz:

BenimEntityTipim gel =verticalGrid1.GetRecordObject(verticalGrid1.FocusedRecord) as BenimEntityTipim;

19
Haz

Devexpress – XtraGrid Focused Row

   Posted by: Yılmaz Yavuz Tags: , ,

GridControl üzerindeki mainview iniz bir GridView ise ve o anda seçili (Focused) kayda erişmek istiyorsanız. Şu şekilde erişebilirsiniz:

BenimEntityTipim gel = ((DevExpress.XtraGrid.Views.Grid.GridView)gridControl1.MainView).GetFocusedRow as BenimEntityTipim;

Devexpress 8.2.6 sürümünde XtraGridControl ile yaşadığım refresh problemi şu şekilde gerçekleşti : EntitySet i datasource olarak verdikten sonra, arka planda eklediğim herhangi bir entity grid üzerinde görünmemekteydi. Yani sadece grid üzerinden yaptığım değişiklikler görünüyor, arkaplandaki değişiklikler EntitySet nesnesi üzerinde debug anında görünmesine rağmen, grid üzerinde görünmüyordu.
Problemi teşhis ettikten sonra, ilk olarak grid nesnemin üzerindeki RefreshDataSource() methodunu denedim ancak; problemi gidermedi.
Sonrasında grid üzerindeki DataSource property sini tekrar aynı EntitySet nesnesini göndererek set ettim ve bir umutla çalıştırdım. Herhangi bir değişiklik yoktu.

Çözüm:

EntitySet<T> nesnemin methodlarına gözatarken GetNewBindingList() methodu dikkatimi çekti. Sorunun çözümü olduğunu düşünerek , hemen denedim ve bingo, sorun giderilmişti.

Niçin böyle bir methoda gerek duyulduğunu henüz anlamış değilim ancak anladığımda burada yayımlıyor olacağım.

12
Şub

WebClient kullanarak Asenkron dosya indirmek

   Posted by: Yılmaz Yavuz Tags: , ,

Uygulamamızda internet üzerinden dosya indirme ihtiyacı duyduğumuzda kullanabileceğimiz sınıflardan bir taneside System.Net.WebClient sınıfıdır. Bu yazıda bu sınıfı kullanarak bir web sitesinden dosya indirmeyi anlatmaya çalışacağım.

Uygulamayı bir windows forms uygulaması olarak geliştireceğiz.
Bunun için Visual Studio üzerinde yeni bir proje oluşturdum ve karşıma gelen Form1.cs üzerinde işlemleri yapıyorum.

Dizayn için gerekenler :
1 Windows form (Form1.cs)
1 TextBox (textBox1)
1 Button (button1)
1 ProgressBar (progressBar1)
son olarakta bir Label (label1)

TextBox içine yazılan web adresindeki içeriği indirip açan, indirirkende durumu progressbarda gösteren ve label içerisinde kaç kb inmiş kaç kb kalmış gösteren bir program yazmayı hedefliyoruz.

Hiç vakit kaybetmeden button1_click olayını yakalayıp kodlarımızı yazmaya başlıyoruz:

        string myLocalFilePath;
private void button1_Click(object sender, EventArgs e)
{

#region DosyaIsmi
string[] pathArray = textBox1.Text.Split('/');
if(pathArray.Length == 0)
{
MessageBox.Show("Lütfen Düzgün bir web adresi giriniz");
return;
}
string fileName = pathArray[pathArray.Length - 1];

myLocalFilePath = Application.StartupPath + fileName;

#endregion
WebClient myClient = new WebClient();
myClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(myClient_DownloadProgressChanged);
myClient.DownloadFileCompleted += new AsyncCompletedEventHandler(myClient_DownloadFileCompleted);
Uri myWebAddress = new Uri(textBox1.Text);
myClient.DownloadFileAsync(myWebAddress,myLocalFilePath);
}

Burda yaptıklarımızı kısaca açıklamak gerekirse öncelikle methodun dışında, indirilecek olan dosyanın yolunu tutmak için bir field oluşturuyoruz, bu bize daha sonra lazım olacak.
Öncelikle, dosyanın bizim harddisk’imizdeki ismini kullanıcıya sormadığımız için, verilen web adresi üzerinden / ile  başlayan son string ifadeyi alıyoruz. Bu arada ufak bir kontrol ile bunun bir web adresi olup olmadığını da, anlıyor ve gerekirse kullanıcıya uyarı veriyoruz.

Daha sonra WebClient class’ından bir örnek oluşturup DownloadProgressChanged ve DownloadFileCompleted event larını yakalıyoruz.
Kullanıcının bize textBox1 ile gönderdiği değeri Uri classından bir örnek oluşturup varsayılan yapıcı(default contructor) methodu na gönderiyoruz.

Ve son olarak da oluşturduğumuz WebClient örneğimizin DownloadFileAsync methodunun (Uri fileAddress,string localFilePath) parametrelerini alan overload’unu elimizde bulunan myWebAddress ve myLocalFilePath değişkenlerimizi göndererek işletiyoruz.

Asenkron dosya böylece webClient ımız tarafından indirilmeye başlanıyor. Durum değişim (ProgressChanged) ve Dosya tamamlanma (FileCompleted) olaylarının tetikleyeceği methodlarıda aşağıdaki şekilde yazarak programımızı çalışmaya hazır hale getiriyoruz.

        void myClient_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
DialogResult dr = MessageBox.Show("Dosya indirme başarıyla gerçekleşti, Dosyayı açmak istermisiniz ?","Dosya indirildi",MessageBoxButtons.YesNo,MessageBoxIcon.Information);
if(dr == System.Windows.Forms.DialogResult.Yes)
{
System.Diagnostics.Process.Start(myLocalFilePath);
}
}

void myClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
label1.Text = String.Format("{0} / {1} Kb", (e.BytesReceived/1024), (e.TotalBytesToReceive/1024));

}

Yazıda bulunan örnek kod (Zip)

Ufak bir örnek:

        public static void LookupEditeVeriDoldur(LookUpEdit lue)
        {
            //Burda datasource olarak datatable, list veya linq entityset ,table vb verebiliriz.
            lue.Properties.DataSource = VeriKaynagim.Veri;
            //EditValue içeriğine yazılacak veri kaynağındaki column/property
            lue.Properties.ValueMember = "ID";
            //Kullanıcı lookup dan bir şey seçtiği ve lookup kapandığında görünecek olan property/column. Boş bırakıldığında object.ToString() methodu çağırılır ve o şekilde görünür.
            lue.Properties.DisplayMember = "ADI";
            //Değer null olduğunda yani herhangi bir şey seçilmediği durumda görünecek olan yazı
            lue.Properties.NullText = "<Lütfen bir Ad Seçiniz>";
            //Önceden eklenmiş olabileceğini düşünüp lookup un columlarını siliyoruz
            lue.Properties.Columns.Clear();
            //Veri kaynağından göstermek istediğimiz column/property leri Lookup'ın Columnlarına ekliyoruz
            lue.Properties.Columns.Add(new LookUpColumnInfo("ADI", 20, "Kullanıcı Adı"));
 
        }

PersistentRepository , Aynı işi gören bir çok repositoryItem ı farklı yerlerde kullanmanız için geliştirilmiş bir control dür.
Şöyleki Sehir RepositoryItemLookUpEdit iniz olsun ve bunu aynı form üzerindeki 3 adet GridControl 1 adet VGridControl de kullandığınızı düşünelim. Hepsinin kendi içinde rlkSehir1,rlkSehir2 gibi oluşturmak yerine bir tane PersistentRepository içinde oluşturuyoruz ve gridlerin ExternalRepository property sine gidip PersistentRepository imizi verelim. Artık Gridlerin kolonlarındaki ColumnEdit propertysinde kendi In-Place Repository sinde olmamasına rağmen rlkSehir RepositoryItemLookUpEdit ini görebiliyoruz.

Böylece hem performans kazancı sağlıyor hemde her biri için ayrı ayrı düzenleme yapma zahmetinden kurtuluyoruz.

Sayfa 1 / 11