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.

Lookupedit databind (veri bağlantılı)


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

        }

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.

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 – 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 :

01.<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Blog.DevexTagCloud._Default" %>
02.
03.<%@ Register Assembly="DevExpress.Web.v9.1, Version=9.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
04.Namespace="DevExpress.Web.ASPxCloudControl" TagPrefix="dxcc" %>
05.
06.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
07.
08.<html xmlns="http://www.w3.org/1999/xhtml" >
09.<head runat="server">
10.<title></title>
11.</head>
12.<body>
13.<form id="form1" runat="server">
14.<div>
15.<dxcc:ASPxCloudControl ID="ASPxCloudControl1" runat="server">
16.</dxcc:ASPxCloudControl>
17.</div>
18.</form>
19.</body>
20.</html>

default.aspx.cs :

01.using System;
02.using System.Collections.Generic;
03.
04.namespace Blog.DevexTagCloud
05.{
06.public partial class _Default : System.Web.UI.Page
07.{
08.protected void Page_Load(object sender, EventArgs e)
09.{
10.List<Tag> myTags = new List<Tag>(10);
11.myTags.Add(new Tag("DevExpress",20));
12.myTags.Add(new Tag("Csharp",25));
13.myTags.Add(new Tag("Asp.Net",15));
14.myTags.Add(new Tag("Mono",5));
15.myTags.Add(new Tag("Objective-C",2));
16.myTags.Add(new Tag("Telerik",1));
17.myTags.Add(new Tag("Wcf",2));
18.myTags.Add(new Tag("TXTextControl",0));
19.
20.ASPxCloudControl1.NameField = "Name";
21.ASPxCloudControl1.TextField = "DisplayName";
22.ASPxCloudControl1.ValueField= "Count";
23.ASPxCloudControl1.NavigateUrlField = "Name";
24.ASPxCloudControl1.NavigateUrlFormatString = "http://www.yilmazyavuz.com/yyblog/index.php/tag/{0}/";
25.
26.ASPxCloudControl1.DataSource = myTags;
27.ASPxCloudControl1.DataBind();
28.}
29.}
30.}

Tag.cs :

01.namespace Blog.DevexTagCloud
02.{
03.public class Tag
04.{
05.public Tag(string name, int count)
06.{
07.DisplayName = name;
08.Name = name.ToLower();
09.Count = count;
10.}
11.
12.public int Count { get; set; }
13.public string DisplayName { get; set; }
14.public string Name { get; set; }
15.}
16.}

Devexpress Gridcontrol – Parent Child with entity objects


Firstly I created two simple entity classes named Article and Comment :

Article.cs :

01.using System.Collections.Generic;
02.
03.namespace DevexMasterChildSample
04.{
05.public class Article
06.{
07.public string Subject { get; set; }
08.public string Body { get; set; }
09.public List<Comment> CommentList { get; set; }
10.
11.}
12.}

Comment.cs

01.using System;
02.
03.namespace DevexMasterChildSample
04.{
05.public class Comment
06.{
07.public string Author { get; set; }
08.public string Message { get; set; }
09.public DateTime CommentDate { get; set; }
10.
11.}
12.}

Then I  Added a simple Windows form file to my project named Form1.cs and in Design Mode I draged a Devexpress GridControl to my form and changed it’s size to fit my form.

After that I created a new level for Gridview1 shown below

Then I renamed the Level to CommentList it must be exactly the same with Master Object’s child collection property name. In this case it is CommentList on Article object

Form1.cs

01.using System;
02.using System.Collections.Generic;
03.using System.Windows.Forms;
04.
05.namespace DevexMasterChildSample
06.{
07.public partial class Form1 : Form
08.{
09.public Form1()
10.{
11.InitializeComponent();
12.}
13.
14.private void Form1_Load(object sender, EventArgs e)
15.{
16.List<Article> articles = new List<Article>();
17.articles.Add(new Article
18.{
19.Body = "Bu yazı devexpress gridcontrolü anlatmaktadır.",
20.CommentList =
21.new List<Comment>
22.{
23.new Comment
24.{
25.Author = "Erdem",
26.CommentDate = DateTime.Now,
27.Message = "Yazınız güzel olmuş."
28.}
29.},
30.Subject = "Devexpress GridControl master Child Örnek"
31.});
32.articles.Add(new Article
33.{
34.Body = "Bu yazı devexpress treeview anlatmaktadır.",
35.CommentList =
36.new List<Comment>
37.{
38.new Comment
39.{
40.Author = "Alkan",
41.CommentDate = DateTime.Now,
42.Message = "Yazınız pek anlaşılır olmamış."
43.}
44.},
45.Subject = "Devexpress Treeview Drag-drop Örnek"
46.});
47.
48.gridControl1.DataSource = articles;
49.
50.}
51.}
52.}

Result :

You can download the sample code here

DXperienceUniversal + IDETools 10.2.8 SetUp + Crack


Visual Studio Controls eXpressApp Framework

CodeRush and Refactor!Delphi / C++Builder Controls

DXperienceUniversal-10.2.8 SetUp
http://downloads.devexpress.com/82477620-2e35-4483-8bab-aacd3008984c/0.0.0.0/DXperience/2010.2/8/DXperienceUniversal-10.2.8.exe

IDETools 10.2.8 SetUp

.NET Documentation Installer VS2005-2008 , CodeRush and Refactor! Installer .NET Documentation Installer (279 Mb) for VS2005, VS2008
http://downloads.devexpress.com/Help/DXperienceHelp2005-10.2.7.exe

DXperienceUniversal-10.2.8 what’s new
http://www.devexpress.com/Support/WhatsNew/DXperience/files/10.2.8.xml