Google da ara

 

Temmuz 2010
Pts Sal Çar Per Cum Cts Paz
« Haz    
 1234
567891011
12131415161718
19202122232425
262728293031  

Google Reklamları

Dil Seçimi

Bağış yada Ödeme

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; }
}
}

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.

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ı"));
 
        }

PersistentRepository – Devexpress

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.