PDA

Tam Sürümünü Görmek İçin : ASP.NET(VB) radio butondan funksiyona değer göndermek


SmaRT_AleCK
21/11/2007, 16:33
Yaptığım projede şöyle bir sorunla karşılaştım

text kutusuna girlen değeri db de(SQL Server 2000) aratıp çıkan sonucların her birinin en başına seç kontrolü(radiobuttun) ekledim
bunu databound kontrolünde itemtemplate alanında yaptım
buraya kadar sorun yok
fakat
kullanıcı kayıtlardan herhangi birini seçtiğinde(radio butona tıkladığında) seçilen kaydın değerini(Id) alıp
işleme fonksiyonuna yollamak istiyorum

fakat bir türlü yapamadım
yardımlarınızı rica ederim.

yazdığım kod şu:

<aspataList ID="DL" runat="server" Width="148px">
<ItemTemplate>
<table>
<tr>
<td>
<input type="radio" name="Msjj" onclick="Msj()" runat=server />
</td>
<td><%# Container.DataItem("Gonderen") %></td>
</tr>
</table>
</ItemTemplate>
<ItemStyle Font-Names="verdana" Font-Size="Smaller" />
</aspataList>


Private Sub FirmaListele(ByVal sender As Object, ByVal e As EventArgs)
Dim wrd As String
Dim conn As SqlConnection
Dim cmd As SqlCommand
Dim rdr As SqlDataReader
wrd = TextBox5.Text
conn = New SqlConnection("SERVER=xx;uid=xx;pwd=xxx;database=xx")
cmd = New SqlCommand("select*from gonderen Where Gonderen like '%" & wrd & "%' order by gonderen", conn)

conn.Open()
rdr = cmd.ExecuteReader()
DL.DataSource = rdr
DL.DataBind()

rdr.Close()
conn.Close()

End Sub


anov
21/11/2007, 16:56
smart_aleck;
benzeri bir sorunla bende datalist içine yazdığım checkbox değerlerini okutmaya çalışırken karşılaşmıştım. Sorunun sebebi, sayfa her yüklendiğinde datalist in DataBind() fonksiyonunu çağırmam idi.

FindControl ile checkbox u bulup değerini okuttuğum event ın sırasından önce Page_Load çalışıyor DataBind() ne var ne yok silip süpürüyordu.

if(!IsPostBack)
{
datalist.DataBind();
}

gibi bir kontrol sorunumu çözdü. Bunu bir araştır.
Kolay gelsin.

SmaRT_AleCK
21/11/2007, 17:23
anov;
öncelikle cvp için teşekkürler
araştırmasını hemen yapıcam fakat aklıma bi kaç şey takıldı
radio buttonların id si aynı hepsinin farklı olanlar value ları
onclick olayında parametre olarak value gönderemez miyim
ayrıca findcontrol elemanların id sine göre arama yapıyor diye biliyorum(emin değilim)
eğer böyle ise radio buttonların id leri aynı

anov
21/11/2007, 19:13
Templated bir kontrolün içinde bulunduğu için id lerinin aynı olması önemli değil, eğer postback sonrasında her düğüm içinde ayrı ayrı dolaşıp FindControl ile buluyorsan her seferinde o düğümün içinde geçerli olan radio kontrolünü bulacaktır zaten.

İkincisi senin son önerdiğin çözüm daha pratik.
Eğer o radiobutton ların AutoPostBack="true" ise yani formu yolluyorlarsa hepsini aynı olaya yönlendirip value lerini öyle kontrol edebilirsin.

((RadioButton)sender).Value ile yakalarsın ama öyle olabileceğini sanmıyorum muhtemelen kullanacağın yol şöyle olacak:

Gridview veya datalist kullanmana göre her düğümün içinde gezinmek için bir foreach döngüsü, düğümlerin içinde radiobutton u bulmak için FindControl, o radiobutton un checked özelliğine bakmak ve eğer seçili ise o radiobutton un value değerini almak.

Ama son önerdiğin şekil bundan çok daha pratik. Kullanabiliyorsan onu kullan.

SmaRT_AleCK
21/11/2007, 23:16
anov haklısın o dediğin şekilde yapıcam
tek nokta şu formu post etme değil hangi radio buton seçiliyise onun değerini arama kriterine atıcak

ben sana yapmak istediğim şeyi söliyim
arama ekranı var
2 tarih arası 1-2 başka kriter ve firma kriteri(sorum bunun içindi)
ya text kutusuna firma numarasını yazacak ya da text kutusunun yanında bir buton var seç diye
o butona tıklayınca bi panel geilyor o panele firma adını girip ara butonuna basınca ilgili kayıtlar datalistte listeleniyor her kayıdın başında radio buton var
seçilen radio butonun value sunu texte yazdıracak

ilgin için teşekkürler