2011-08-16 36 views
0

我有一个需要与ASP.NET Web服务交互的ASP.NET 3.5 webforms应用程序。 Web服务提供了要填充到下拉列表中的有效值列表。建议在客户端还是服务器端执行此操作?如果在服务器端完成,我该如何为我的asmx Web服务定义数据源集?如果在客户端完成,请建议一个好的JQuery小部件。如何使用Web服务方法的结果填充DropDownList?

非常感谢您的帮助!

+0

正在返回什么数据格式? XML/JSON? – Gthompson83

+0

JSON我相信。 – SidC

回答

1

OPTS我定义使用内置的收集数据的合同之一来呈现JSON列表中的WCF服务:

[ServiceContract] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
public class optionsservice 
{ 

    // Return a dynamic list of the options 
    [WebInvoke(UriTemplate = "/getOptions?type={type}", Method = "GET", ResponseFormat = WebMessageFormatJson)] 
    public SelectOptions getOptions(string filter = "") 
    { 

     SelectOptions returnOptions = new SelectOptions(); 
     //get your datatable here. 
     foreach (DataRow r in tbl.Rows) 
     { 
      returnOptions.Add((string)r["id"], (string)r["value"]); 
     } 
     return returnOptions; 

    } 

    [CollectionDataContract(Name = "collection", 
      KeyName = "id", 
      ValueName = "value", 
      Namespace = "")] 
    public class SelectOptions : Dictionary<string, string> { } 
} 

你也可以投的DataTable添加到列表,但是这是唯一的示例代码我手头

这里是你将如何箱装入的jQuery:

<script type="text/javascript" src="jquery.js"></script> 
     <script type="text/javascript" charset="utf-8"> 
     $(function(){ 
     $("select#ctlSelect").change(function(){ 
      $.getJSON("/select.php",{id: $(this).val(), ajax: 'true'}, function(j){ 
      var options = ''; 
      for (var i = 0; i < j.length; i++) { 
       options += '<option value="' + j[i].id + '">' + j[i]value + '</option>'; 
      } 
      $("select#ctlSelect").html(options); 
      }) 
     }) 
     }) 
     </script>