Google da ara

 

Eylül 2010
Pts Sal Çar Per Cum Cts Paz
« Ağu    
 12345
6789101112
13141516171819
20212223242526
27282930  

Google Reklamları

Dil Seçimi

Bağış yada Ödeme

Sayfa 1 / 212»

Devexpress – AspxCloudControl Örnek

03.05

Devexpress AspxCloudControl u elimizde hazır bulunan bir cloud datasını ekrana basmak için kullandığımız bir devex kontrolüdür.

Örnekte bir blog sitesindeki tag leri aspx cloud control ü kullanarak nasıl ekrana çıkartacağımız gösterilmiştir.
İlk olarak Visual Studio yu açarak, Yeni bir Web Project oluşturuyoruz. Proje içinde; öncelikle Tag adında bir class oluşturup Name,DisplayName,Count adında üç property ekliyoruz.

Sonra default.aspx içerisine devexpress CloudControl u sürükleyip bırakıyoruz. Default.aspx.cs içerisine gelip, Yeni bir tag tipinde generic list oluşturup, içine tag elemanlarını ekliyoruz. Bu elemanların count propertylerinin birbirinden farklı olması cloud controlün görünümünü etkileyen asıl unsurdur. Daha sonra CloudControl ün TextField alanını “DisplayName” , NameField alanını “Name”, NavigateUrlField alanını “Name” , NavigateUrlFormatString alanını  “http://www.yilmazyavuz.com/yyblog/index.php/tag/{0}/” , ValueField alanını “Count” şeklinde atıyoruz. Burdaki alanlardan önemli olan TextField , ValueField ve NavigateUrlField alanları bu alanlar :

TextField : Önyüzde gösterilecek olan yazı,
ValueField: Önyüzde gösterilecek olan yazıyı boyutlandırmak için kullanılacak değer.
NavigateUrlField : Önyüzde gösterilecek olan elemanın gideceği adres yada NavigateUrlFormatString de belirtilen stringin içerisine yerleştirilecek değer.
NavigateUrlFormatString : içinde sadece {0} alanının NavigateUrlField değeriyle doldurulacağı string.Format yazımı ile aynı olan değer.

Son olarak oluşturduğumuz generic tag  listesini aspxCloudControl ün DataSource özelliğine atıyoruz, ve databind methodunu çağırıyoruz.

Böylece nurtopu gibi bir tag cloud umuz olmuş oluyor .

Örnekte anlatılanların koda dökülmüş hali aşağıdadır.

default.aspx :


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Blog.DevexTagCloud._Default" %>

<%@ Register Assembly="DevExpress.Web.v9.1, Version=9.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxCloudControl" TagPrefix="dxcc" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<dxcc:ASPxCloudControl ID="ASPxCloudControl1" runat="server">
</dxcc:ASPxCloudControl>
</div>
</form>
</body>
</html>

default.aspx.cs :


using System;
using System.Collections.Generic;

namespace Blog.DevexTagCloud
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<Tag> myTags = new List<Tag>(10);
myTags.Add(new Tag("DevExpress",20));
myTags.Add(new Tag("Csharp",25));
myTags.Add(new Tag("Asp.Net",15));
myTags.Add(new Tag("Mono",5));
myTags.Add(new Tag("Objective-C",2));
myTags.Add(new Tag("Telerik",1));
myTags.Add(new Tag("Wcf",2));
myTags.Add(new Tag("TXTextControl",0));

ASPxCloudControl1.NameField = "Name";
ASPxCloudControl1.TextField = "DisplayName";
ASPxCloudControl1.ValueField= "Count";
ASPxCloudControl1.NavigateUrlField = "Name";
ASPxCloudControl1.NavigateUrlFormatString = "http://www.yilmazyavuz.com/yyblog/index.php/tag/{0}/";

ASPxCloudControl1.DataSource = myTags;
ASPxCloudControl1.DataBind();
}
}
}

Tag.cs :


namespace Blog.DevexTagCloud
{
public class Tag
{
public Tag(string name, int count)
{
DisplayName = name;
Name = name.ToLower();
Count = count;
}

public int Count { get; set; }
public string DisplayName { get; set; }
public string Name { get; set; }
}
}

YYToolkit – XmlExporter

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

Devexpress AspxGridView – InitNewRow

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.

Devexpress GridControl – ParentChild gösterimi ve birkaç özelliği

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.

Sonsuz Kategori Mantığı ve Devexpress TreeList üzerinde gösterimi

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.

Devexpress – VerticalGrid FocusedRecord

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

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

Devexpress – XtraGrid Focused Row

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;

XtraGridControl ve Linq EntitySet Refresh problemi

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.

WebClient kullanarak Asenkron dosya indirmek

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)

Lookupedit databind (veri bağlantılı)

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ı"));
 
        }
Sayfa 1 / 212»