UpdatePanel Olmadan Bir Açılan Denetimden Gelen Geri Göndermeleri İşleme (C#)
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 olduğunu belirlemek için bir yol sunmaz. Ancak küçük bir püf noktası 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
tanesi metin kutularını ve açılan pencereleri 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 void c1_SelectionChanged(object sender, EventArgs e)
{
string id = tbHidden.Value;
if (id == "tbDeparture" || id == "tbReturn")
{
TextBox tb = (TextBox)FindControl(id);
tb.Text = (sender as Calendar).SelectedDate.ToShortDateString();
}
}
</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ı metin kutusuna yerleştirir (Tam boyutlu resmi görüntülemek için tıklayın)
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin