Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Javascript / DHTML / Ajax

Cevapla
 
LinkBack Seçenekler
Eski 20/05/2007, 12:02   #1 (permalink)
Üye
 
Dragut Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2007
Mesaj: 2
Varsayılan JavaScript'tten C# a deger gecirme sorunu...

Öncelikle selamlar.. ilk mesajımda birşeyler sormak istemezdim, ama gerçekten başım dertte. JavaScript ve ASP konusunda pek bilgili olmadığımdan, size basit gelebilecek bir sorunum var..

"map.aspx" adlı sayfamda "Image1" isimli bir resmim var. Bu resmin, tıklanan piksel değerlerini "map.aspx.cs" sayfasına bir şekilde geçirmem ve kullanmam lazım. Resim üzerinde tıklanan yerin koordinatlarını javascript kullanarak alabiliyorum.. Şöyle ki:

<head runat="server">
<script type="text/javascript">
function show_coords(event)
{
x=event.clientX
y=event.clientY
window.status = "X coords: " + x + ", Y coords: " + y


}
</script>
</head>

Ve,

<asp:Image ID="Image1" runat="server" Height="810px" ImageUrl="~/images/tempMap.jpg"
Style="left: 248px; position: absolute; top: 247px" Width="810px" onclick="show_coords(event)" />

(bu satırların tamamı map.aspx'in içinde)

Bu şekilde tarayıcının altında tıklanan koordinatları görebiliyorum. Ama bu koordinatları bir türlü alıp "map.aspx.cs" ye gönderemedim. Sayfa üzerinde bir textbox oluşturup onun içine atmayı bile denedim, o kadar çaresiz kaldım yani.

form1.TextBox1.Value = "5"

gibi..

Bu konuda yardımcı olursanız gerçekten çok sevinirim. Bu arada, .Net 2005 kullanıyorum..
Dragut hatta değil   Alıntı Yaparak Yanıtla
Eski 21/05/2007, 00:13   #2 (permalink)
neo
Kurtarıcı değil, Deterjan
 
Üyelik Tarihi: 01/2003
Mesaj: 94
Varsayılan

Bu mesele Ajax(özellikle bir Ajax framework kullanarak) ve javascript kullanılarak çözülür.

Fakat ben sana daha kolay bir yol söyleyeyim.

1)Form üzerine iki tane TextBox yerleştir (gizli de olabilir, görünür de... Sana bağlı) Birisine X birisine de Y koordinat değeri gelecek.

2)Bir tane de Button yerleştir. Button'a click yapıldığında server tarafında koordinatları TextBox'lardan alacak şekilde kodlamanı yap.

3) Javascript tarafında ise yapacağın şey: Koordinatları al ve TextBox'lara değer olarak yerleştir, sonra da Button nesnesinin click() metodunu manuel olarak çağır ve PostBack mekanizmasının çalışmasını sağla.

Böylece sunucuya seçim Textbox'lar içinde gönderilecektir. Kodlama konusunda yardıma ihtiyacın olursa tekrar buraya yaz.

Kolay gelsin.
neo hatta değil   Alıntı Yaparak Yanıtla
Eski 21/05/2007, 02:37   #3 (permalink)
Üye
 
Dragut Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2007
Mesaj: 2
Varsayılan

yardımın için teşekkürler Neo, ama sorunum zaten script le textbox a birşeyler yazamıyor olmak. Tahminimce, çok basit birşey olduğu için direk onunla ilgili bir cevap bulamıyorum.

Şu satırı buldum:

document.getElementById(TextBox1).value = "5"

ama bu satırı koyduğum zaman programı çalıştırınca tarayıcıdan "error on page" yazısı geliyor
Dragut hatta değil   Alıntı Yaparak Yanıtla
Eski 21/05/2007, 10:47   #4 (permalink)
neo
Kurtarıcı değil, Deterjan
 
Üyelik Tarihi: 01/2003
Mesaj: 94
Varsayılan

Normalde ASP.NET ID olduğun verdiğin değerle bir input(type=text) oluşturur ve senin getElementById('TextBox1') diyerek ona erişebilmen gerekir.

Bazen TextBox bir bileşenin içine yerleştirildiğinde, mesela ContentPlaceHolder veya GridView veya başka bir şey, TextBox1 değeri tekrar etmeyecek başka bir şeye dönüştürülür. Mesela benim yaptığım bir sayfada şuna benzer bir ID oluşturuluyor
Kod:
<input type=text id="ctl0__TextBox1"....
Bu durumda sen document.getElementById('TextBox1') dersen tabi ki sana NULL değer dönecektir. Bu yüzden şöyle bir şey yazman gerekir.
Kod:
<script language=javascript>
function show_coorrd(...)
{
    ....
    var tb1 = getElementById2('TextBox1', 'INPUT');
}

function getElementById2(oldId, tagName)
{
    var elements = document.getElementsByTagName(tagName);
    for(var i=0; i<elements.length; i++)
       if (elements[i].id.indexOf(oldId) >= 0)
          return elements[i];
     return null;
}
</script>
NOT: Yukarıdaki indexOf metodu yerine RegExp kullanılması daha iyi olurdu, basitlik adına böyle bıraktım.
neo hatta değil   Alıntı Yaparak Yanıtla
Eski 21/05/2007, 10:58   #5 (permalink)
Varlığa izin veren boşluk
 
anov Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Yer: İstanbul
Mesaj: 2,824
Varsayılan

Eğer hem server tarafında hem client tarafında aynı ID ile ulaşabilmek istiyorsan, <asp:TextBox yerine <input type="text" id="html_input" runat="server"/> gibi bir kullanımı tercih etmelisin.

Yine de herhangi bir datagrid, datalist vb. templated kontroller içinde bu kontrolün aynı id ile bir kaç kez tekrar etmesine karşı yine javascript ile bazı önlemler alabilirsin. (Tekrar ediyorsa almalısın da)
anov hatta değil   Alıntı Yaparak Yanıtla
Eski 21/05/2007, 11:05   #6 (permalink)
neo
Kurtarıcı değil, Deterjan
 
Üyelik Tarihi: 01/2003
Mesaj: 94
Varsayılan

Aslında orjinal ID'nin değişmesini durumunu javascript tarafında yönetebilmenin birden fazla yolu var, yeri gelmişken bir tanesini daha yazayım.

Sunucu tarafında
Kod:
 protected void Page_Load(...)
 {
   ...
   ...
   // Kontrollerin oluşturulmuş ID'lerini javascript'e aktar
   string clientScript = "<script>var generatedIds = new Array();";
   foreach(Control c in this.Controls)
       clientScript += String.Format("generatedIds['{0}'] = '{1}'\n", 
         c.ID, c.ClientID);   
   clientScript += "</script>";

   RegisterStartupScript("ids", clientScript);
 }
İstemci tarafında ise
Kod:
 var tb1 = document.getElementById( generatedIds['TextBox1'] );
gibi bir şeyler çalışabilir.

NOT: Denemedim, yazım hataları olabilir.
neo hatta değil   Alıntı Yaparak Yanıtla
Eski 21/05/2007, 11:20   #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

neo:
Bir de taaa .net in ilk zamanlarında istemci tarafındaki DOM a erişebilen bir paket(.net dll i) vardı. Cengiz Han ın blogunda mı görmüştüm, başka bir yerde mi tam hatırlayamıyorum. Adam C# kodunun içinde js koduna benzer bir şekilde document.getElementById kullanıyordu. Neydi bu neydi?
anov hatta değil   Alıntı Yaparak Yanıtla
Eski 21/05/2007, 12:11   #8 (permalink)
neo
Kurtarıcı değil, Deterjan
 
Üyelik Tarihi: 01/2003
Mesaj: 94
Varsayılan

İlk defa duyuyorum.
neo 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
Sayafaya gelen deger yok ise ? deger atamak yousemeti PHP 5 19/08/2006 05:39
eski verileri yeni bir mysql versiyona geçirme webthese Veritabanları & SQL 2 13/05/2006 04:38
Formda Alt alana geçirme bocek Javascript / DHTML / Ajax 1 17/09/2005 15:11


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

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