Bir Denetimi Dinamik Olarak Doldurma (VB)Dynamically Populating a Control (VB)

Hristia WENZ tarafındanby Christian Wenz

Kodu indirin veya PDF 'yi indirinDownload Code or Download PDF

ASP.NET AJAX denetim araç setinde DynamicPopulate denetimi bir Web hizmetini (veya sayfa yöntemini) çağırır ve ortaya çıkan değeri sayfa yenilemesi olmadan sayfadaki bir hedef denetime doldurur.The DynamicPopulate control in the ASP.NET AJAX Control Toolkit calls a web service (or page method) and fills the resulting value into a target control on the page, without a page refresh.

Genel bakışOverview

ASP.NET AJAX denetim araç setinde DynamicPopulate denetimi bir Web hizmetini (veya sayfa yöntemini) çağırır ve ortaya çıkan değeri sayfa yenilemesi olmadan sayfadaki bir hedef denetime doldurur.The DynamicPopulate control in the ASP.NET AJAX Control Toolkit calls a web service (or page method) and fills the resulting value into a target control on the page, without a page refresh. Bu öğreticide nasıl ayarlanacağı gösterilmektedir.This tutorial shows how to set this up.

AdımlarSteps

İlk olarak, DynamicPopulatetarafından çağrılacak yöntemi uygulayan bir ASP.NET Web hizmetine ihtiyacınız vardır.First of all, you need an ASP.NET Web Service which implements the method to be called by DynamicPopulate. Web hizmeti sınıfı, Microsoft.Web.Script.Servicesiçinde tanımlanan ScriptService özniteliğini gerektirir; Aksi takdirde ASP.NET AJAX, Web hizmeti için DynamicPopulateiçin gereken istemci tarafı JavaScript proxy 'sini oluşturamaz.The web service class requires the ScriptService attribute which is defined within Microsoft.Web.Script.Services; otherwise ASP.NET AJAX cannot create the client-side JavaScript proxy for the web service which in turn is required by DynamicPopulate.

DynamicPopulate denetimi her bir Web hizmeti çağrısıyla bir bağlam bilgilerini gönderdiğinden, Web yönteminin contextKeydize türünde bir bağımsız değişken beklemesi gerekir.The web method must expect one argument of type string, called contextKey, since the DynamicPopulate control sends one piece of context information with each web service call. Aşağıdaki Web hizmeti, contextKey bağımsız değişkeni tarafından temsil edilen bir biçimde geçerli tarihi döndürür:The following web service returns the current date in a format represented by the contextKey argument:

<%@ WebService Language="VB" Class="DynamicPopulate" %>
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Web.Script.Services
<ScriptService()> _
Public Class DynamicPopulate
 Inherits System.Web.Services.WebService
 <WebMethod()> _
 Public Function getDate(ByVal contextKey As String) As String
 Dim myDate As String = ""
 Select Case contextKey
 Case "format1"
 myDate = String.Format("{0:MM}-{0:dd}-{0:yyyy}", DateTime.Now)
 Case "format2"
 myDate = String.Format("{0:dd}.{0:MM}.{0:yyyy}", DateTime.Now)
 Case "format3"
 myDate = String.Format("{0:yyyy}/{0:MM}/{0:dd}", DateTime.Now)
 End Select
 Return myDate
 End Function
End Class

Web hizmeti daha sonra DynamicPopulate.vb.asmxolarak kaydedilir.The web service is then saved as DynamicPopulate.vb.asmx. Alternatif olarak, DynamicPopulate denetimi ile gerçek ASP.NET sayfasında bir sayfa yöntemi olarak getDate() yöntemini uygulayabilirsiniz.Alternatively, you could implement the getDate() method as a page method within the actual ASP.NET page with the DynamicPopulate control.

Sonraki adımda yeni bir ASP.NET dosyası oluşturun.In the next step, create a new ASP.NET file. Her zaman olduğu gibi ilk adım, ASP.NET AJAX kitaplığı 'nı yüklemek ve Denetim araç takımını çalışır hale getirmek için geçerli sayfaya ScriptManager dahil edilir:As always, the first step is to include the ScriptManager in the current page to load the ASP.NET AJAX library and to make the Control Toolkit work:

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

Daha sonra Web hizmeti çağrısının sonucunu gösteren bir etiket denetimi (örneğin, aynı adın HTML denetimini veya <asp:Label /> Web denetimi) ekleyin.Then, add a label control (for instance using the HTML control of the same name, or the <asp:Label /> web control) which will later show the result of the web service call.

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

Bir HTML düğmesi (bir HTML denetimi olarak, sunucuya geri gönderme gerektirtiğimiz için), dinamik popülasyonu tetiklemek için kullanılır:An HTML button (as an HTML control, since we do not require a postback to the server) will then be used to trigger the dynamic population:

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

Son olarak, bağlantı kurmak için DynamicPopulateExtender denetimine ihtiyacımız var.Finally, we need the DynamicPopulateExtender control to wire things up. Aşağıdaki öznitelikler ayarlanacak (belirgin olanlardan ayrı olarak, ID ve runat="server"):The following attributes will be set (apart from the obvious ones, ID and runat="server"):

  • Web hizmeti çağrısından sonucun nereye yerleştirileceğini TargetControlIDTargetControlID where to put the result from the web service call
  • Web hizmetinin yolunu ServicePath (bir sayfa yöntemi kullanmak istiyorsanız atlayın)ServicePath path to the web service (omit if you want to use a page method)
  • Web yönteminin veya sayfa yönteminin ServiceMethod adıServiceMethod name of the web method or page method
  • Web hizmetine gönderilecek bağlam bilgilerini ContextKeyContextKey context information to be sent to the web service
  • Web hizmeti çağrısını tetikleyen PopulateTriggerControlID öğesiPopulateTriggerControlID element which triggers the web service call
  • Web hizmeti çağrısı sırasında hedef öğenin boş bırakılıp başlatılmayacağını ClearContentsDuringUpdateClearContentsDuringUpdate whether to empty the target element during the web service call

Gördüğünüz gibi, denetim bazı bilgiler gerektirir, ancak her şeyi konuma koymak oldukça basit bir işlemdir.As you can see, the control requires some information but putting everything into place is quite straight-forward. Geçerli senaryoda DynamicPopulateExtender denetimi için biçimlendirme aşağıda verilmiştir:Here is the markup for the DynamicPopulateExtender control in the current scenario:

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

Tarayıcıda ASP.NET sayfasını çalıştırın ve düğmesine tıklayın; geçerli tarihi ay-gün biçiminde alacaksınız.Run the ASP.NET page in the browser and click on the button; you will receive the current date in month-day-year format.

düğmeye tıklama sunucudan tarihi alırA click on the button retrieves the date from the server

Düğmeye tıklama, tarihi sunucudan alır (tam boyutlu görüntüyü görüntülemek Için tıklatın)A click on the button retrieves the date from the server (Click to view full-size image)