Aracılığıyla paylaş


Bir Denetimi Dinamik Olarak Doldurma (C#)

Christian Wenz tarafından

PDF’yi İndir

ASP.NET AJAX Denetim Araç Seti'ndeki DynamicPopulate denetimi bir web hizmetini (veya sayfa yöntemini) çağırır ve sonuçta elde edilen değeri sayfa yenilemesi olmadan sayfadaki hedef denetime doldurur.

Genel Bakış

DynamicPopulate ASP.NET AJAX Denetim Araç Seti'ndeki denetim bir web hizmetini (veya sayfa yöntemini) çağırır ve sonuçta elde edilen değeri sayfa yenilemesi olmadan sayfadaki bir hedef denetime doldurur. Bu öğreticide bunun nasıl ayarlanacağı gösterilmektedir.

Adımlar

Her şeyden önce, tarafından DynamicPopulateçağrılmak üzere yöntemini uygulayan bir ASP.NET Web Hizmeti gerekir. Web hizmeti sınıfı içinde Microsoft.Web.Script.Servicestanımlanan özniteliği gerektirirScriptService; aksi takdirde ASP.NET AJAX, web hizmeti için istemci tarafı JavaScript proxy'sini oluşturamaz ve bu da tarafından DynamicPopulategereklidir.

Denetim her web hizmeti çağrısıyla bir bağlam bilgisi gönderdiğinden, web yöntemi dize türünde adlı contextKeyDynamicPopulate bir bağımsız değişken beklemelidir. Aşağıdaki web hizmeti geçerli tarihi bağımsız değişkeniyle contextKey temsil edilen biçimde döndürür:

<%@ WebService Language="C#" Class="DynamicPopulate" %>
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;
[ScriptService]
public class DynamicPopulate : System.Web.Services.WebService
{
 [WebMethod]
 public string getDate(string contextKey)
 {
 string myDate = "";
 switch (contextKey)
 {
 case "format1":
 myDate = String.Format("{0:MM}-{0:dd}-{0:yyyy}", DateTime.Now);
 break;
 case "format2":
 myDate = String.Format("{0:dd}.{0:MM}.{0:yyyy}", DateTime.Now);
 break;
 case "format3":
 myDate = String.Format("{0:yyyy}/{0:MM}/{0:dd}", DateTime.Now);
 break;
 }
 return myDate;
 }
}

Ardından web hizmeti olarak DynamicPopulate.cs.asmxkaydedilir. Alternatif olarak, yöntemini denetimiyle getDate()DynamicPopulate gerçek ASP.NET sayfasında bir sayfa yöntemi olarak uygulayabilirsiniz.

Sonraki adımda yeni bir ASP.NET dosyası oluşturun. Her zaman olduğu gibi, ilk adım ScriptManager geçerli sayfaya ASP.NET AJAX kitaplığını yüklemek ve Denetim Araç Seti'nin çalışmasını sağlamaktır:

<asp:ScriptManager ID="asm" runat="server" />

Ardından, daha sonra web hizmeti çağrısının sonucunu gösterecek bir etiket denetimi (örneğin, aynı ada sahip HTML denetimini veya <asp:Label /> web denetimini kullanarak) ekleyin.

<label id="myDate" runat="server" />

Ardından dinamik popülasyonu tetikleme amacıyla bir HTML düğmesi (sunucuya geri gönderme gerektirmediğimiz için HTML denetimi olarak) kullanılır:

<input type="button" id="Button1" runat="server" value="Load date (m-d-y)" />

Son olarak, işleri halletmek DynamicPopulateExtender için kontrole ihtiyacımız var. Aşağıdaki öznitelikler ayarlanır (belirgin özniteliklerin ID dışında ve=runat"server" ):

  • TargetControlID web hizmeti çağrısından sonucun yerleştirileceği yer
  • ServicePath web hizmetinin yolu (sayfa yöntemi kullanmak istiyorsanız atla)
  • ServiceMethod web yönteminin veya sayfa yönteminin adı
  • ContextKey web hizmetine gönderilecek bağlam bilgileri
  • PopulateTriggerControlID web hizmeti çağrısını tetikleyen öğe
  • ClearContentsDuringUpdate web hizmeti çağrısı sırasında hedef öğenin boşaltılıp boşaltılmayacağı

Gördüğünüz gibi, denetim biraz bilgi gerektirir, ancak her şeyi yerine koymak oldukça kolaydır. Geçerli senaryoda denetimin DynamicPopulateExtender işaretlemesi aşağıdadır:

<ajaxToolkit:DynamicPopulateExtender ID="dpe1" runat="server"
 ClearContentsDuringUpdate="true"
 TargetControlID="myDate" ServicePath="DynamicPopulate.cs.asmx"
 ServiceMethod="getDate"
 ContextKey="format1" PopulateTriggerControlID="Button1" />

tarayıcıda ASP.NET sayfasını çalıştırın ve düğmeye tıklayın; geçerli tarihi ay-gün-yıl biçiminde alırsınız.

Düğmeye tıkladıktan sonra tarih sunucudan alınır

Düğmeye tıkladığınızda sunucudaki tarih alınır (Tam boyutlu görüntüyü görüntülemek için tıklayın)