Sende olmasan jQuery nasıl öğrencez hiç bilmiyorum. Anlamadığım birşey var OnLoadtaki base.OnLoad(e); tam olarak ne işe yarıyor
Burada kullandığımız metot override olduğundan dolayı dediğin ifade kullanılıyor. Yani yazdığımız bu metodun çalışması gereken bir adım. Zira visual studio ile bu kodlamayı yaparken bu kod bloğu otomatik oluşuyor.
Çok güzel bir uygulama teşekkür ederim. Acaba bu işlem sırasında kullanıcı kontrolüne parametre göndermenin bir yolu var mı? Ben bulamadım şahsen.
Tabiki parametre veya istediğimiz bir bilgiyi gönderebiliriz. Bunu da ajax metodunda belirlediğimiz url ile yapabiliriz. Url`de tıpkı querystring mantığı ile parametre gönderebiliriz. Bunu da kullanıcı kontrolünün kod kısmında request.rawurl deyip tüm url`yi alabiliyoruz. Daha sonra ise elde ettiğimiz ifadeyi split edip istediğimiz bilgiye ulaşıyoruz. Ancak burada split ile uğraşıyoruz. Çünkü; request.querystring çalışmıyor.
Mehmet çok işime yarıyacak bir yol göstermişsin.Çok teşekkür ederim sana..
Yüklediğimi Kullanıcı kontrolüne test için
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Response.Write("Geldi");
}
Yazıyorum. hiç bir şekilde çalışmıyor. Nerede yanlış yapıyorum..
Tam olarak nasıl kullanıyorsun ve ne yapmak istiyorsun?
Sorunu düzellttim. webservis ayarlamasında aşağıdaki yöndemle usercontrol`u yüklüyordum. HtmlTextWriter ht = new HtmlTextWriter(sw); p.RenderControl(ht); HttpContext.Current.Server.Execute(p, sw, false); olarak değiştirdiğimde düzeldi.. Fakat sayfada AutoPostBack özelliğini kullanamıyorum. DataGrid sayfalama yapmıyor. örneğin. test için dropDownList ekledim oda AutoPostBack olmuyor. Bunun için ne yapmam gerekyor?
theform.__EVET TARGET null hatası veriyor.
yardımların için teşekkür ederim.
Daha önce hiç karşılaşmamıştım bu sorunla. Daha doğrusu postback`i engelleyecek bir işlem yok burada. Sadece ajax ile kullanıcı kontrolünü okuyup alıyoruz. Postback`i engelleyen başka birşey olsa gerek.
Selamun Aleyküm .
Merhaba mehmet Duran.
Hocam bu yöntemi kullanıyorum ancak şöyle bir sıkıntı var örneğin usercontrolumde normal html işlemleri yapınca veya respoense.write yapınca işlem gerçekleşiyor ve user control yükleniyor.
Ancak usercontrole bir gridview attığımda şöyle bir sorun ile karşı karşıya kalıyorum.
Error executing child request for handler 'System.Web.UI.Page'
Bir server kontrol attığımda çalışmmıyor bu durumda benim herşeyi html kontrol olarak mı yapmam lazım.
iyi çalışmalar
Gridview'ın çalışması form tagı arasında olması ve bu form tagının runat=Server gibi özelliği olması gerekiyor. Bu yüzden hatayı alıyorsundur. Gridview yerine datalist, repeater kontrolünü kullanabilirsin.
Merhabalar Mehmet,
Sormak istediğim birşey var. Bu usercontrolleri sunucu tarafından isterken ne şekilde parametre gönderebiliriz? Şu an bir haber portali tasarlıyorum ve yorumları jQuery ile çekmek istiyorum. User Controlü talep ederken bir parametre gönderebilirmiyiz? Mesela NewsComments.ascx?action=GetComments?NewsID=x
Teşekkür ederim şimdiden.
Evet dediğin olay mümkün ve ben de aynen o şekilde bir kullanım yapıyorum çoğu yerde. Hem url'de dediğin gibi bir parametre iletimi mümkün hem de ajax metodunda data özelliği ile veri göndermek mümkün. Hangisini tercih edeceğin sana kalmış.
Ben jquery ile o sayfaya istek göndermiyorum yanlız. Çektiğim kontrolü gizlemek adına sadece sayfa indexi ile istek gönderiyorum sunucu tarafında bu indexi kontrol edip url belirliyorum fakat aşağıdaki gibi hataya düşüyorum:
System.Web.HttpException: '~/Controls/NewsComments.ascx?a=5' is not a valid virtual path.
Bunun önlenmesi adına birşey yapabilirmiyim? Ya da farklı bir kullanım mı denemem gerek?
Sayfaya istek yapmak gerekmiyor. Dediğim gibi data iletimi yapabilirsin. Hataya gelince virtual path'de bir sorun var. Bu değeri server.mappath ile vermeyi dene bir de. Sorun sadece path sorunu.
Çok sağol Mehmet, yapmaya çalıştığım şeyinsaçma olduğunu biraz geç anladım. Yorumları jQuery ile çekmemin bir faydası yokmuş aslında. Yabancı kaynaklardan da araştırdığıma göre controle query string paslayamıyoruz o şekilde. Session variable ile yapmayı önermişler fakat o durumda da başka sorunlar çıkacaktı. Herneyse :)
Yine ufak bir not: Belki bilerek yapmışsındır ama yazdığımız yorumlardaki "\n"leri br tagıyla değiştirmen güzel olurdu.
Teşekkür ederim.
Yapmak istediğini anladım ve bu yöntemi sitemin yönetim panelinde kullanıyorum. Yorum bölümünü de bu şekilde Ajax ile yapmıştım ama daha sonra değiştirdim. Direk ilk yorumunda söylediğin gibi url ile data gönderebilirsin. Ben kullanıyorum ve bir sorun yok. Ayrıca yorum konusunda belirttiğin kontrolü yapmak istiyorum veya basit bir editör koymak istiyorum. Bunu da zamanla hallederim. Şimdilik pek vaktim yok.
Arkadaşım blogun çok faydalı nerdeyse imdat simidimiz desem yeri. Sorum şu olacak usercontrolde şöyle bi tanımlama yaptım.
for (int i = 0; i < 5; i++)
{
fu[i] = new FileUpload();
fu[i].ID = "fu_" + i.ToString();
resimler.Controls.Add(fu[i])
}
daha sonra jquery ile bunu render ettiğimde hata veriyor.İmage veya runat="server" özelliği eklediğim divlerde hata vermiyor. Ama yukarıdaki kod bloğunu denediğimde hata veriyor.(System.Web.UI.Page'.)
Merhaba. Hatanın metnini yazmış olsaydın daha iyi olurdu. Bu konuda hatanın nedeni bazı kontrollerin runat="server" tagı olan formların içinde çalışmak zorunda olması. Ayrıca yazdığın kodlarda resimler adındaki kontrolün runat="server" özelliği olmak zorunda. Onun dışında hatanın ne olduğunu anlamak için hata nedenine bakmak lazım. Bu şekilde pek brşey söyleyemem.
merhaba neden onload ı override edelim ki pageload da herhangi bir işlem yapmıyoruz. dolayısıyla ben webservisle bu örnegi gerçekleştirdim. override etmeden de calıstı. gridview biraz vaktimi aldı. dedigin gibi runat=server blokları arasında calısan bir kontrol
form id=Deneme runat="server"
asp:GridView ID="GridView1" runat="server" formyapısını usercontrolde kullanırsanız problem aşılmış olur.
umut
16 Ağustos Pazartesi 2010 19:42
#21
iyi günler...bu uygulma ile ilgili bir sorum olacak.
yaptığınız örneği kendi uygulamamda kullanmaya çalıştım fakat HttpContext.Current.Server.Execute(p, sw, false); kodu çalıştığında user controlun onload u ve ondan sonra load eventi çalıştı fakat tekrar static fonksiyonuma geri dönmüyor yani
sonuc = sw.ToString();
sw.Close();
return sonuc;
kodları çalışmıyor.. sizce bu sorun neden kaynaklanıyor olabilir? şimdiden teşekkürler..
Merhaba. Böyle bir sorun yaşıyorsan muhakkak bir yerde sorun oluşuyordur. Break point ile sorun yaşadığın yerleri bulabilirsin veya Firebug ile Ajax sonucunda dönen değerden hatanın nedenini görebilirsin.
merhaba. ben chat.aspx sayfasından Mesaj.aspx sayfasına jquery ile mesaj içeriğini(txtIcerik) ve kullanıcı ID (UID)sini gonderiyorum. Mesaj.aspx dosyasında iç içe iki repeater bulunmakta. Mesaj.aspx sayfasını .cs bolumunde
[System.Web.Services.WebMethod]
public static string Gonder(string txtIcerik, string UID)
{
//Bu sayfada tanımladığım repeaterlara(iç içe iki repeater) erişemiyorum. Yapmak istediğim şey mesaj içeriğini ve kullanıcı ID sini alıp repeatırı güncellemek.
}
Yardım?
@fatih, bir sayfada veya başka bir yerde tanımlanan static metot içinde kontrollere erişemezsin. Buradaki yöntem için bu geçerli. Bunun için burada işlem yaparken kontrollere ihtiyaç duymayacağın bir plan yapmalısın veya alt yapıyı kontrollere erişebilecek şekilde değiştirmelisin (UpdatePanel, vb.).
Merhaba... Öncelikle bu örnek uygulamaları paylaştığınız için teşekkür ederim. Bu örnek uygulamayı hazırlamaya çalıştığımda
"StringWriter sw = new StringWriter();"
satırında hata verdi. Hatada "'StringWriter' tür veya ad alanı adı bulunamadı" diyor. jQuery kodlarında UserControl'ün adresini verirken hata yaptığımı düşünüyorum. Şu şekilde yazdım: "data: "{adres:'"+~/Kontroller/Deneme.ascx+"'}", yazdığım formatta mı bir sorun var acaba çünkü adres doğru.
@Sezai, eğer belirtiğin hatayı o satırda almışsan sorunun nedeni System.IO kütüphanesini eklememiş olmandır. Bu kütüphaneyi eklersen o satırdaki hatayı almazsın. Parametreleri doğru göndermiş isen devamında da bir problem oluşmaz.
merhaba. ya ben login panelini jquery ile çağırmak istiyorum. jquery url('./LoginPanel.ascx') şeklinde. fakat hata veriyor. demek istediğim giriş yapa tılkadığında ajax ile loginPanel.ascx yuklensin ve kullanıı bilgilerini giriş yapabilsin. yardımlarınız için simdiden tesekkurler.
@fatih, söylemiş olduğun şey için buradaki örnek yeterli. Ancak dikkat etmen gereken nokta giriş yapılacak kısımda yani giriş butonunun yapacağı işlemi de webmethod ile yapmak zorunda olman. Bu şekilde örneği uyarlayarak işlemi gerçekleştirebilirsin.
Teşekkürler hallettim onu. fakat bi sorun daha var. ajax ile login.aspx sayfasını ana sayfada gösterebiliyorum. ama login.aspx deki resimler gorunmuyor. imageUrl si doğru fakat ajax ile çağırınca görünmüyor. neden olabilir sizce
@fatih, resimlerin adresi login.aspx için doğru olabilir ama çağırdığın sayfanın dizini ne ise ona göre adresleri vermelisin. Ajax ile çağırdığın anda dizi ne ise resimlerin dizini de aynı olmalı.
tam olarak ne anlatmaya çalıstıgınızı anladım da çözüm yolunu bulamadım buna benzer yaptığınız bi örnek varsa paylaşın lütfen. teşekkürler ilgilendiğiniz için.
@fatih, şu anda gösterebileceğim örnek yok. Ancak biraz daha açmak gerekirse resmin yolunu verirken (src veya url değeri) adresi / ile başlatıp olduğu gibi yazmalısın. / işareti root demektir ve hangi dizinde olursa olursa root'tan itibaren dosyaları arar. (Örnek <img src=/klasör/images/a.jpg>)
~/ işareti vardı basında. Yani ~/UserFolders/KullanıcıKlasor/... şeklinde devam ediyo. Ama şu şekilde yazınca (UserFolders/KullanıcıKlasor) düzeldi. teşekkürler. bi konu hakkında fikir danışmak istiyorum. Yarın Mesaj atacam size. kontrol ederseniz sevinirim. teşekkürler
merhabalar. default sayfama jquery ile login.aspx sayfasını cağırıyorum. login.aspx sayfasında istediğim divleri gorunur yapamıyorum. yani login.aspx sayfasındaki tanımlı dive tıklayınca gorunmesini istiyorum.(login.aspx sayfasında bi kac div var. tıklayınca bunların ID sini gosterebiliyorum.) fakat tıklayınca gorunup hemen kayboluyor. sizce neden ya lutfen cok ihtiyacım var.
@fatih, yaptığın işlemde div görünür olup tekrar görünmez oluyorsa kullandığın metotta sıkıntı vardır. Kodları görmeden nedir ne değildir birşey söylemek pek doğru değil.
Ümit
09 Aralık Perşembe 2010 22:31
#36
Örneği projede uygulamaya kalktığımda
"HttpContext.Current.Server.Execute(p, sw, false);" bu kısmın altını çiziyor ve
The best overloaded method match for 'System.Web.HttpServerUtility.Execute(System.Web.IHttpHandler, System.IO.TextWriter, bool)' has some invalid arguments.
hatasını veriyor
bu şekilde uyguladığımda ise
HttpContext.Current.Server.Execute((IHttpHandler)p, sw, false);
sayfada hata meydana geliyor ve "p" IhttpHandler a atanamadı diyor. Sorun nerde acaba.
@Ümit, senin execute etmek istediğin dosya user control veya page olmalı. Ama sen HttpHandler'i execute etmek istiyorsun. Burada httphandler ile yapacağın şeyi usercontrol ile yapmalısın veya direk olarak Ajax isteğini httphandler'a yapmalısın. Bu konuda sitemde yazı ve örnek mevcut.
Merhabalar. Galiba uygulamanızı eksik anlatmışsınız. MasterPage var ama Default5.aspx falan post ediyor. Kaynak dokümanları bi upload sitesine atabilme imkanınız var mı?
@halil, bu yazının ilkinde verdiğim kodlara baktın sanırım. Ancak örnekte masterpage yok. Sadece bir sayfa altında tanımlaığım webmethod var ve ona istediğim sayfadan (aynı projede olmak koşuluyla) istekte bulunuyorum. Buradaki örnekler şu anda indirilebilir değil ama sitemdeki diğer Ajax örneklerinin çoğu bununla benzer ve örnekler mevcut. Onlara bakmanı tavsiye ederim.