Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > ASP.NET / Silverlight / Moonlight

Cevapla
 
LinkBack Seçenekler
Eski 25/03/2008, 13:01   #1 (permalink)
Üye
 
Üyelik Tarihi: 04/2007
Mesaj: 112
Varsayılan Masterpage den içindeki webusercontrol kontrollerine erişmek

Merhaba

Master sayfamda üsttaraftaki sabit menü için bir usercontrol oluşturdum.
İstenens ayfaların türne böre bu menüde bazı linkler aktif/deaktif olacak

Master sayfanın load olayında güncel sayfanın adını alıyorum.
Bu noktadan sonra user control içindeki kontrollerin (linkbutton) bunları aktif pasif veya gizle/ göster yapmam lazım

Master sayfadan alt sayfadaki kontroleri findcontrol ile kontrol etmek mümkün ama usercontrol içindkei controlere nasıl erişirim?

Teşekürler
alpaygunes hatta değil   Alıntı Yaparak Yanıtla
Eski 25/03/2008, 13:17   #2 (permalink)
Varlığa izin veren boşluk
 
anov Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Yer: İstanbul
Mesaj: 2,824
Varsayılan

UserControl de sonuçta Control den türediği için FindControl metodu onda da bulunmaktadır. Ama burada daha değişik bir yol tercih edebiliriz.

UserControl ü bağladığımız nesneye public bir özellik ekleyebiliriz.
public bool aktif = true; //gibi.

Sonra o kontrolün Page_Load olayında bu özelliği kontrol edip, ona göre işlem yapabiliriz.
Aynı zamanda bu şekilde tanımlanan özelliklere markup içinden de
<benimkontrolum:Kontrol ID="kontrol1" runat="server" aktif="false"/>
gibi de erişebiliriz.
anov hatta değil   Alıntı Yaparak Yanıtla
Eski 25/03/2008, 14:12   #3 (permalink)
Üye
 
Üyelik Tarihi: 04/2007
Mesaj: 112
Varsayılan

TEŞEKKÜRLER
hocam fikrinizi temel alarak kendimde mantık yürüterek hallettim

privatevoid ButonlarinOzellikleriniYapinaldir()
{
Control ButonSeti = (Control)Page.Master.FindControl("ButtonSeti1");
Control KapaButonu = (Control)ButonSeti.FindControl("LinkButtonKapat");
KapaButonu.Visible =
false;
//Control yuklenecekkontrol = LoadControl("kendikontrolum.ascx");
//ButonSeti.LinkButtonKapat.Visible = false;
}
alpaygunes hatta değil   Alıntı Yaparak Yanıtla
Eski 25/03/2008, 14:24   #4 (permalink)
Üye
 
Üyelik Tarihi: 04/2007
Mesaj: 112
Varsayılan

KapaButonu.PostBackUrl = http://www.meb.gov.tr;

KapaButonu adındaki controlün PostBackUrl özeliğini değiştriemiyorum hata veriyor. intellisense listelemiyor zaten bu özelliği. acep neden ? Olmazsa ikninci yolu denerim.
alpaygunes hatta değil   Alıntı Yaparak Yanıtla
Eski 25/03/2008, 14:41   #5 (permalink)
empty
 
UuuR Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2007
Mesaj: 728
Varsayılan

adresi çift tınak içinde yazmayı denemişmiydin?
__________________
artık yok..
UuuR hatta değil   Alıntı Yaparak Yanıtla
Eski 25/03/2008, 14:50   #6 (permalink)
Üye
 
Üyelik Tarihi: 04/2007
Mesaj: 112
Varsayılan

Alıntı:
UuuR, mesajından alıntı: Mesajı Gör
adresi çift tınak içinde yazmayı denemişmiydin?

evet evet . Keşke hata orda olsa
Duraklama noktası ekleyip inceledeim controlun sadece Text="Kapat" diye bir özeliğini gösteriyo.
alpaygunes hatta değil   Alıntı Yaparak Yanıtla
Eski 25/03/2008, 14:56   #7 (permalink)
Varlığa izin veren boşluk
 
anov Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Yer: İstanbul
Mesaj: 2,824
Varsayılan

Önceki mesajımda bir hata var, kullanıcı tarafından yazılan kontrolün markup kodundan müdahale edilebilir özellikleri olması için, public property tanımlamak gerekir.

* Ayrıca ClassName özelliğine de kod tarafında Control gibi genel bir nesneye değil de o özelliği haiz bir nesneye çevrim yapabilmek için geçerli bir nesne ismi belirtilmelidir.

* Çevrim Control nesnesine değil de o nesneye yapılmalıdır.

Örneğin:

kontrol.ascx
Kod:
<%@ Control Language="C#" ClassName="kontrol"%>
<script runat="server">
public bool Aktif
{
     set {
        linkbuttonDeneme.Enabled = value;
     }
     get {
       return linkbuttonDeneme.Enabled;
     }
}
</script>

<asp:LinkButton ID="linkbuttonDeneme" runat="server" Text="Deneme"/>
Bu kontrolü kullanan sayfa ise;

sayfa.aspx
Kod:
<%@ Page Language="C#"%>
<%@ Register TagPrefix="kontrol" TagName="Deneme" Src="kontrol.ascx"%>
<html>
<head><title>Deneme</title></head>
<body>
<form runat="server">
<kontrol:Deneme ID="kontrol" runat="server" Aktif="false"/>
</form>
</body>
</html>
FindControl den çevrim yaparken "kontrol" veya hangi ismi verdiysen ona çevrim yaparsan CodeBehind da da otomatik tamamlamada (markup içinde de) çalışır.

Kolay gelsin.
anov hatta değil   Alıntı Yaparak Yanıtla
Eski 25/03/2008, 16:27   #8 (permalink)
Üye
 
Üyelik Tarihi: 04/2007
Mesaj: 112
Varsayılan

Hocam çok teşekürler yazılarınızı uygulamya çalıştım ama beceremiyorum. Ama pes etmedim . Mutlaka bir şekilde yapacam bunu.

http://www.csharpnedir.com/makalegoster.asp?MId=531

bu makaleyi anlamaya çalışacam sanırım sizinki ile pararlel
alpaygunes hatta değil   Alıntı Yaparak Yanıtla
Eski 25/03/2008, 17:30   #9 (permalink)
Varlığa izin veren boşluk
 
anov Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Yer: İstanbul
Mesaj: 2,824
Varsayılan

Evet yazıda söylediklerimle paralellik var. UserControl içindeki iç kontrollere erişememe sebebimiz, markup dan üretilen C# kodunun, tüm kontrolleri "protected" olarak tanımlamasıdır.

Ama bu makale senin yapmak istediğin şey için en pratik yolu içermeyebilir.

Şimdi ilk sorunu yine okudum da, biz neden bu şekilde objelerle vs. uğraşıyoruz ki?

UserControl ün bulunduğu sayfanın ismini, onun olayları içinde de alabilirsin. Bir Page_Load olayı tanımla. Ve içinde Request.ServerVariables["SCRIPT_NAME"] özelliğinin değerine bak. Sonuçta aynı Context üzerinden dönmüyor mu bu kontrol bize? Aynı nesne ağacının (Control Tree) parçası değil mi?

Eğer sayfaya iliştirilmemiş bir kod arka planı üzerinde, o anda çağırılan sayfanın hangisi olduğunu öğrenmek istiyorsan şunu kullan :

HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"];//using System.Web;

Klasik asp nin mirası :-)
anov hatta değil   Alıntı Yaparak Yanıtla
Eski 25/03/2008, 21:12   #10 (permalink)
Üye
 
Üyelik Tarihi: 04/2007
Mesaj: 112
Varsayılan

Hocam umarım birgün senin seviyene ulaşırım . 2256 mesajını görüncede bir üstatla muhattap olduğumu sanıyorum.

Ben sorunumu şu şekilde çözdüm belki senin önerin kadar sofistike degil ama başlangıç için iyi. Umarım bir yıl sorna bu mesajlarını okur ve neden anlayamamışım diye tebüsümle anarım.


usercontrolumun kodları

publicpartialclassUser_Controls_ButtonSeti : System.Web.UI.UserControl
{
protectedvoid Page_Load(object sender, EventArgs e)
{

}
publicbool Sayi
{
set
{
LinkButtonKapat.Visible = value;
}
get
{
return LinkButtonKapat.Visible;
}
}

}


masterpage regirter satırı

<%@Registersrc="../User_Controls/ButtonSeti.ascx"tagname="ButtonSeti"tagprefix="uc1" %>


marterpage load oalyında
this.ButtonSeti1.Sayi = false;



TEŞEKÜRLER USTA
alpaygunes hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
masterpage de masterpage.master çıkmıyor cyilmaz ASP 0 22/06/2007 03:17
MasterPage 'de Utf-8 Sorunu audespare ASP 1 05/06/2007 12:12
c# ile web sayfası kontrollerine erişim(?) volkii C# 1 13/02/2007 14:58
Hücrenin içindeki değere erişmek derme Javascript / DHTML / Ajax 2 15/08/2006 17:27
Theme in masterpage fatihbil ASP 2 08/08/2006 21:20


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 18:34.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net