Konuyu görüntüle
IUCODERS FORUM > Programlama > .NET > de?i?ken say?da olu?turulan (dinamik) controllere eventhandler ... C# ASP.NET
Yazar
halil


avatar

Kayıt: 01.01.2006
10.04.2006-21:48 #5466
herkese merhaba ;

yapmak istediğim şu ,
veritabanımda sonsuz sayıda kategori ve bunlara bağlı alt kategoriler var , ya da bu işlevi sağlamasını istiyorum :) , db tasarımını yaptım

Elimdeki db içeriği de şu şekilde ; daha açıklayıcı olması açısından

ÖSS Hazırlık 
	Konu Anlatımları
		Türkçe
		Mat.
		Geo.
			Açılar
			Üçgenler
			Çıkmış Sorular
			
	Online Denemeler
	XXYXYXYYXYX ...
OKS Hazırlık 
YDS Hazırlık
LES Hazırlık	


Her seviyedeki kategoriler için DropDownList kullanıyorum Mesela 1.ddlist te ;

ÖSS Hazırlık
OKS Hazırlık
YDS Hazırlık
LES Hazırlık var ,

ÖSS Hazırlık seçildimi ; Konu Anlatımları , Online Denemeler , XYZYXYXYXY , 2.ddliste girişi yapılıyor .

böyle seviye seviye devam ediyor işlem .

soruna gelirsek ;

seçilen kategori seviyesine ekleme, düzenleme , silme işlemleri yapan kontrol panelini yazıyorum şu anda ,
sonsuz kategori , ddlist sayısının sürekli değişebilmesini gerektireceğinden codebehind yazmak istiyorum controlleri ,
sabit sayıdaki controle codebehind eventhandler eklenebiliyor da değişken sayıdaki controllere nasıl eklenir nasl yapılır bilmiyorum ,crying

şu iş nasıl yapılır bilen var mı :) , elinde kod örneği olan varsa paylaşırsa sevinirim

ya da çözüm için başka tasarım önerileri de alabilirim , bi tree view anca paklar beni smug





....
Yazar
cantur


avatar
Rize
admin
Kayıt: 16.01.2006
11.04.2006-01:32 #5481
selam halil istediğin bumu bilmiyorum ama codebhind da sana bi ddlist oluşturup buna bir event handler bağlama örneği yaptım. ddlisti kaybolmasın diye Application değişkeni olarak sakladım (Bu kötü bir yaklaşım sakın kullanma kodun patlar çok insan girince) belki bunsuz da çalışır bilemiyorum.

al bunu bir aspx sayfana kopyala sınıf ismini değiştirmeyi unutma :)

Bu işini görür mü bilmiyoorum ama anlattığın olay tam manası ile ağaç isteyen bir iş. Böyle işlemleri dinamik yaplmaya kalkmaktansa veriler çok fazla değilse tamamını kullanıcıya kapanabilir ağaç şeklinde sunmak daha basit oluyor. (javascript destekli v.s.)

Gelelim koddaki önemli noktaya (öğrenmek isteyen diğer arkadaşlar için ) Yaptığım olay DropDownList i dinamik oluşturmak.
DropDownList ddlist = new DropDownList();
çeşitli özellliklerini ayarlayıp bir eventHandler bağlamak
ddlist.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
ve son olarak dinamik olduğundan sayfa postback olduğunda DropDownListime tekrar erişebilmek için onu Server Raminde depolamak.

Bu kod sağlıklı değil (Projede kullanılacak ise optimize edilmeli veya başka çare aramalısın)

Kolay gelebiggrin

Özgür Can TURNA



using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebApplication2
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class frm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DropDownList DropDownList1;
protected System.Web.UI.HtmlControls.HtmlForm Form1;
public DropDownList[] ddlistler;
private void Page_Load(object sender, System.EventArgs e)
{

if(!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("kod");
dt.Columns.Add("kod_adi");
dt.Columns.Add("ebeveyn"); // gibi

DataRow dtRow;

for(int i = 0 ; i <10 ; i++)
{
dtRow = dt.NewRow();
dtRow[0] = i;
dtRow[1] = i;
dt.Rows.Add(dtRow);
}
ddlistler = new DropDownList[30];
Application.Add("listeler",ddlistler);

DropDownList ddlist = new DropDownList();
ddlist.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
// ddlist.DataBinding += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
ddlist.DataTextField = "kod_adi";
ddlist.DataValueField = "kod";
ddlist.AutoPostBack = true;
ddlistler[0] = ddlist;
ddlist.DataSource = dt;
ddlist.ID = "dropdown";
ddlist.DataBind();

Form1.Controls.Add(ddlist);
}
else
{
DropDownList ddlis;
ddlistler = (DropDownList[])Application["listeler"];
ddlis = ddlistler[0];
Form1.Controls.Add(ddlis);
}


}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
RegisterStartupScript("halil","<script>alert('Merhaba');</script>");
((DropDownList)sender).ForeColor = Color.Blue;
}
}
}






Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
11.04.2006-12:42 #5490
AJAX laman lazım . biggrin sonuçta olay bir tree.
http://www.irian.at/myfaces/tree2NiceWrap.jsf





N/A
Yazar
halil


avatar

Kayıt: 01.01.2006
11.04.2006-19:33 #5501
özgür kod için sağol zaman ayırmışsın , optimize etmeye çalışıcam , ajax ~ tree view arası bişey uydurmaya çalışıcam artık tarıkta da tree örneği varmış yollasın ona da bakıcam , bu kodu optimize edersem buraya yollarım millet faydalansın ...

orhanbaba sana da tenk yu blushing





....
Yazar
safter


avatar

Kayıt: 18.04.2006
20.04.2006-13:11 #5803
selamlar ben c# kursuna katılan bir ögrenci olarak bir daha ki dersin ne zaman yapılacagı hakkında bilgi edinme özgürlügüm oldugunu düşünüyorum bu özgürlügü kimse elimden alama:Ptongue şaka bir yana p.tesi yapacakmısın tarık abi şu dersi ve nerelere çalışarak gelelim haydii başşş başşşş





q
Yazar
tarikkranda


avatar

Kayıt: 07.01.2006
20.04.2006-19:49 #5810
safter yazdi
 
selamlar ben c# kursuna katılan bir ögrenci olarak bir daha ki dersin ne zaman yapılacagı hakkında bilgi edinme özgürlügüm oldugunu düşünüyorum bu özgürlügü kimse elimden alama:Ptongue şaka bir yana p.tesi yapacakmısın tarık abi şu dersi ve nerelere çalışarak gelelim haydii başşş başşşş


Ders olacak bu Pazartesi (24.04.2006)
Bahsi gecen kitaptaki unite 1-2-3 u mutlaka calisin tekrar edin cunku gecen hafta isledik, bu haftada 4-5-6 ve hatta zaman kalırsa 7. uniteyi islemeyi planliyoruz. Bu hafta daha fazla ornek kod yazarak hatta yeterli zamanimiz olursa sizlerinde yazmasi icin bekleyerek tartisarak bir ders gecirmeyi planliyorum. Onun haricinde dersin sonunda kariyer planlariniz ile alakali kisa bir soyleside yapabiliriz.Dersin saatini buradan duyururum sizlere takipte kalin:)

NOT: Bu arada Halil, sana javascript agaci geldi mi eline ulasti mi? Ben DB den kayitlari donduruyordum, ozgurde javascript agacindaki uygun formata donusturuyordu sana gondermis olmasi lazim javascript agacini. O aagac burada bahsettigin isi rahatlıkla çözecektir.Kolay gelsin...





Yazar
halil


avatar

Kayıt: 01.01.2006
20.04.2006-20:49 #5813
tarikkranda yazdi
 

NOT: Bu arada Halil, sana javascript agaci geldi mi eline ulasti mi? Ben DB den kayitlari donduruyordum, ozgurde javascript agacindaki uygun formata donusturuyordu sana gondermis olmasi lazim javascript agacini. O aagac burada bahsettigin isi rahatlıkla çözecektir.Kolay gelsin...


gelmedi :) , javascriptsiz bi şekilde yaptım , ama db doldukça performans bakımından yetersiz kalabilir , msn adresime atabilirsen sevinirim , sağol





....
Yazar
safter


avatar

Kayıt: 18.04.2006
21.04.2006-14:50 #5856
teşekkürler tarık abi çalışıyoruz valla yaw sen anlattın ya bu imagene cup işini kafam o günden beri orda yaw ama bir yandanda ben kimmm imagene cup kim demiyor degilim gerçi birinci sınıfım daha ama....d oh





q
Yazar
tarikkranda


avatar

Kayıt: 07.01.2006
21.04.2006-23:18 #5876
safter yazdi
 
teşekkürler tarık abi çalışıyoruz valla yaw sen anlattın ya bu imagene cup işini kafam o günden beri orda yaw ama bir yandanda ben kimmm imagene cup kim demiyor degilim gerçi birinci sınıfım daha ama....d oh


Daha yolun cok basindasin, elinden geleni yapmaya cabalarsan o kadar cok yol alirsin ki geri donup baktiginda sen bile inanamassin. Zaten bizim en buyuk problemimiz ben kim orasi kim demek. Oraya giden hic kimse anasinin karninda ogrenmiyor o teknolojileri, calisarak ogreniyor, hivc bir basarida tesaduf olmadigina gore, gerisi calismak. Ben simdi birinci sinifta olsaydım, garantisini verebilirsim imagine cup yarısmasının ama gecti bizden, elimizden geldigince sizleri yonlendirmeye calisiyoruz iste:) İcinizden birkac tanesini bile is guc sahibi yapabilirsek ne mutlu bize, ileride iyi anarsiniz bizi:))





Yazar
revenge


avatar

Kayıt: 16.04.2008
16.04.2008-18:28 #42754
halil selam senin yaptığın o projeyi benimle paylaşırmısın.





Yazar
revenge


avatar

Kayıt: 16.04.2008
16.04.2008-21:58 #42770
Her seviyedeki kategoriler için DropDownList kullanıyorum Mesela 1.ddlist te ; 

ÖSS Hazırlık 
OKS Hazırlık 
YDS Hazırlık 
LES Hazırlık var , 

ÖSS Hazırlık seçildimi ; Konu Anlatımları , Online Denemeler , XYZYXYXYXY , 2.ddliste girişi yapılıyor . 

böyle seviye seviye devam ediyor işlem . 


Su yaptıklarını paylasırmısın acil :S





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb