Custom Datagrid (Datagrid Düzenleme)

CorsaiR

Emektar
27 Ara 2005
1,228
18
Çekirdekten
Custom Datagrid (Datagrid Düzenleme)
Datagrid nesnesini kendinize göre düzenleyin,renklerini değiştirin,aklınıza gelen herşey için bir örnek..

Giriş


Arkadaşlar .Net içinde gelen datagrid nesnesi ile uğraşanlar bilir ki,onu kendi istediğimiz biçime sokmak hiçte sandığımız kadar kolay olmuyor....
Bugün datagrid nesnesinin üzerinde nasıl oynuyacağımız üzerinde duracağım...
Bu kodu vb.net e çevirdiğinizde de kolaylıkla çalışacağını göreceksiniz..

örneğimize başlayalım;

Formumuza bir datagrid nesnesi yerleştirip ismini mydtgrid yapalım..

Örneğimiz sizinde makinelerinizde çalışması için datatable nesnesi ile bir tablo yaratmak şeklinde olucak...

Bildiğiniz gibi Datatable (tablo nesnesi) nesnesi kendi içinde column(kolon,alan) ve Rows(satır) lardan oluşur..

bizde yeni bir tablo yaratalım ve içine datacolumn nesnelerimizi ekleyelim..


public bir datatable nesnesi yaratalım;
DataTable tablo=new DataTable("tablomuz");


Formumuzun load ına şu kodları yazalım...
// alan tipleri tanımlanıp yaratılıyor...


DataColumn kod=new DataColumn("kod",Type.GetType("System.String"));
DataColumn ad=new DataColumn("ad",Type.GetType("System.String"));

//tablomuza yani datatable nesnemize bu alanlar ekleniyor..
tablo.Columns.AddRange(new DataColumn[]{kod,ad});
//load da procedure çağıralım
Format_Grid();
//datagrid iminiz datasource unu datatable nesnemize set edelimki,gridimiz dolsun.

mydtgrid.DataSource=tablo;



formumuzun load ında bir procedure çağırıp orada datagrid imizi istediğimiz gibi formatlayalım


(C# nesnesinde **** anahtar sözcüğü kullanıldığında (return) bir değer döndürmeniz gerekmez,procedure gibi davranır)

bir önemli uyarı daha bir procedure yada function yazıyorsanız yazdığınız func. ve procedur ler yazdığınız olayın üzerinde tanımlamanız gerektiğidir.. Böyle yapmazsanız c# bunu anlamaz...


Form load olayını üzerine bir procedure açıp ismini
Format_grid verelim..
Tanımlamamız şu şekilde olucak


private **** Format_Grid()
{

}


Datagrid nesnesi içinde DataGridTableStyle denen tablolarla birebir ilişkilendireceğimiz yapı saklar...


Bunu tanımlayalım;

private **** Format_Grid()
{

DataGridTableStyle ts1 = new DataGridTableStyle();
//datable nesnesi ile tablestyle mizi birbirine bağlamamız gerekiyor...Bunuda mappingname özelliği ile yapıyoruz.
tablo.tablename özelliği,
ilişkilendireceğimiz tablo adını otomatik olarak almasını sağlar

ts1.MappingName=tablo.TableName;



//renklendirelim
ts1.GridLineColor=Color.Blue;
ts1.AlternatingBackColor=Color.SeaGreen;
ts1.BackColor=Color.Yellow;


}


Bir sonraki aşamamız kolonlarını yaratıp tanımlamak;

private **** Format_Grid()
{
DataGridTableStyle ts1 = new DataGridTableStyle();
ts1.MappingName=tablo.TableName;
ts1.GridLineColor=Color.Blue;
ts1.AlternatingBackColor=Color.SeaGreen;
ts1.BackColor=Color.Yellow;

//kolonları yaratalım..

DataGridTextBoxColumn clm1=new DataGridTextBoxColumn();
DataGridTextBoxColumn clm2=new DataGridTextBoxColumn();
//kolonları yarattık onu formatlıyalım


clm1.MappingName=tablo.Columns[0].ColumnName;
clm1.NullText="";
clm1.HeaderText="Kod";
clm1.Width=80;


clm2.MappingName=tablo.Columns[1].ColumnName;
clm2.NullText="";
clm2.HeaderText="Adı";
clm2.Width=100;


// kolonları yarattıktan sonra tablestyle nesnemize ekliyoruz.

ts1.GridColumnStyles.AddRange(new System.Windows.Forms.DataGridColumnStyle[] {clm1,clm2});

//yarattığımız tablestyle i datagrid imize ekleyelim
mydtgrid.TableStyles.AddRange(new System.Windows.Forms.DataGridTableStyle[] {ts1} );

}



Tam kodu vermeden önce gelin datatable nesnesine 2 yeni kayıt ekleyelim.. bunu Datarow nesnesi ile yapacağız...

Gene formumuzun load olayına ekliyeceğimiz kodlar dan biri şu

//iki yeni kayıt ekleniyor.

DataRow row;
row=tablo.NewRow();
row["kod"]="1";
row["ad"]="Erol";
tablo.Rows.Add(row);
row=tablo.NewRow();
row["kod"]="2";
row["ad"]="Sıtar";
tablo.Rows.Add(row);
tablo.AcceptChanges();






formunuzun arkasına yapıştırabileceğiniz tam kod aşağıdaki gibidir..




using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace cusomdatagrid
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.DataGrid mydtgrid;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override **** Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private **** InitializeComponent()
{
this.mydtgrid = new System.Windows.Forms.DataGrid();
((System.ComponentModel.ISupportInitialize)(this.mydtgrid)).BeginInit();
this.SuspendLayout();
//
// mydtgrid
//
this.mydtgrid.DataMember = "";
this.mydtgrid.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.mydtgrid.******** = new System.Drawing.Point(15, 25);
this.mydtgrid.Name = "mydtgrid";
this.mydtgrid.Size = new System.Drawing.Size(460, 255);
this.mydtgrid.TabIndex = 0;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(477, 358);
this.Controls.Add(this.mydtgrid);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
((System.ComponentModel.ISupportInitialize)(this.mydtgrid)).EndInit();
this.ResumeLayout(false);

}
#endregion

DataTable tablo=new DataTable("tablomuz");

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static **** Main()
{
Application.Run(new Form1());
}
private **** Format_Grid()
{


DataGridTableStyle ts1 = new DataGridTableStyle();
ts1.MappingName=tablo.TableName;
ts1.GridLineColor=Color.Blue;
ts1.AlternatingBackColor=Color.SeaGreen;
ts1.BackColor=Color.Yellow;

DataGridTextBoxColumn clm1=new DataGridTextBoxColumn();
DataGridTextBoxColumn clm2=new DataGridTextBoxColumn();



clm1.MappingName=tablo.Columns[0].ColumnName;
clm1.NullText="";
clm1.HeaderText="Kod";
clm1.Width=80;


clm2.MappingName=tablo.Columns[1].ColumnName;
clm2.NullText="";
clm2.HeaderText="Adı";
clm2.Width=100;




ts1.GridColumnStyles.AddRange(new System.Windows.Forms.DataGridColumnStyle[] {clm1,clm2});


mydtgrid.TableStyles.AddRange(new System.Windows.Forms.DataGridTableStyle[] {ts1} );

}


private **** Form1_Load(object sender, System.EventArgs e)
{

DataColumn kod=new DataColumn("kod",Type.GetType("System.String"));
DataColumn ad=new DataColumn("ad",Type.GetType("System.String"));
tablo.Columns.AddRange(new DataColumn[]{kod,ad});



Format_Grid();
mydtgrid.DataSource=tablo;
DataRow row;
row=tablo.NewRow();
row["kod"]="1";
row["ad"]="Erol";
tablo.Rows.Add(row);
row=tablo.NewRow();
row["kod"]="2";
row["ad"]="Sıtar";
tablo.Rows.Add(row);
tablo.AcceptChanges();
}


}
}

 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.