UpdatePanel Olmadan Bir Açılan Denetimden Gelen Geri Göndermeleri İşleme (VB)
Christian Wenz tarafından
AJAX Denetim Araç Seti'ndeki PopupControl genişleticisi, başka bir denetim etkinleştirildiğinde açılır pencere tetiklemenin kolay bir yolunu sunar. Böyle bir panelde geri gönderme gerçekleştiğinde ve sayfada birkaç panel olduğunda, hangi panele tıklandığını belirlemek zordur.
Genel Bakış
AJAX Denetim Araç Seti'ndeki PopupControl genişleticisi, başka bir denetim etkinleştirildiğinde açılır pencere tetiklemenin kolay bir yolunu sunar. Böyle bir panelde geri gönderme gerçekleştiğinde ve sayfada birkaç panel olduğunda, hangi panele tıklandığını belirlemek zordur.
Adımlar
Bir geri gönderme ile kullanırken PopupControl
, ancak sayfada bir UpdatePanel
olmadan, Denetim Araç Seti hangi istemci öğesinin geri göndermeye neden olan açılır pencere tetiklediğini belirlemek için bir yol sunmaz. Ancak küçük bir hile, bu senaryo için geçici bir çözüm sağlar.
Her şeyden önce, temel kurulum şudur: her ikisi de aynı açılan pencere olan bir takvim tetikleyen iki metin kutusu. İki PopupControlExtenders
kişi metin kutularını ve açılan menüleri bir araya getirir.
<form id="form1" runat="server">
<asp:ScriptManager ID="asm" runat="server" />
<div>
Departure date: <asp:TextBox ID="tbDeparture" runat="server" />
Return date: <asp:TextBox ID="tbReturn" runat="server" />
</div>
<asp:Panel ID="pnlCalendar" runat="server">
<asp:Calendar ID="c1" runat="server" OnSelectionChanged="c1_SelectionChanged" />
</asp:Panel>
<ajaxToolkit:PopupControlExtender ID="pce1" runat="server"
TargetControlID="tbDeparture" PopupControlID="pnlCalendar" Position="Bottom" />
<ajaxToolkit:PopupControlExtender ID="pce2" runat="server"
TargetControlID="tbReturn" PopupControlID="pnlCalendar" Position="Bottom" />
</form>
Temel fikir, açılan öğeyi <form
> başlatan metin kutusunu tutan öğeye gizli bir form alanı eklemektir:
<input type="hidden" id="tbHidden" runat="server" />
Sayfa yüklendiğinde JavaScript kodu her iki metin kutusuna da bir olay işleyicisi ekler: Kullanıcı bir metin kutusuna her tıkladığında, adı gizli form alanına yazılır:
<script type="text/javascript">
function pageLoad()
{
$get("tbDeparture").onclick = saveTextBox;
$get("tbReturn").onclick = saveTextBox;
}
function saveTextBox()
{
$get("tbHidden").value = this.id;
}
</script>
Sunucu tarafı kodunda gizli alanın değeri okunmalıdır. Gizli form alanlarını işlemek önemsiz olduğundan, gizli değeri doğrulamak için güvenli liste yaklaşımı gerekir. Doğru metin kutusu belirlendikten sonra takvimdeki tarih bu kutuya yazılır.
<script runat="server">
Protected Sub c1_SelectionChanged(sender As object, e As EventArgs)
Dim id As String = tbHidden.Value
If (id = "tbDeparture" Or id = "tbReturn")
Dim tb As TextBox = CType(FindControl(id), TextBox)
tb.Text = CType(sender, Calendar).SelectedDate.ToShortDateString()
End If
End Sub
</script>
Kullanıcı metin kutusuna tıkladığında Takvim görüntülenir (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Bir tarihe tıklanması, bu tarihi metin kutusuna yerleştirir (Tam boyutlu resmi görüntülemek için tıklayın)