2011-05-08 36 views
2

我試圖將國家/地區web服務添加到下拉列表。我已經添加了Web引用,並有discomap和wsdl文件。正在使用country.asmx

這裏是我的代碼隱藏:

net.webservicex.www.country ws = new net.webservicex.www.country(); 
ddlCountry.DataSource = ws.GetCountries(); 
ddlCountry.DataBind(); 

我嘗試了上面的代碼,但它僅顯示在下拉列表每行一個字符。我不確定如何做到這一點,這是我第一次使用Web服務。我感謝任何幫助。謝謝!

+1

ws.GetCountries()返回什麼樣的對象? – Avitus 2011-05-08 01:49:25

+0

我認爲這是一個字符串。我該如何檢查? – multiv123 2011-05-08 01:52:33

+0

請檢查'GetCountries();' – 2011-05-08 01:54:28

回答

2

GetCountries()返回XML。您需要解析XML以獲取國家/地區列表作爲字符串列表。

如果您的.NET 3.5或更高版本,您可以使用LINQ to XML輕鬆完成此操作。

using System; 
using System.Linq; 
using System.Xml.Linq; 

namespace WebApplication1 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      var service = new net.webservicex.www.country(); 
      var xml = service.GetCountries(); 
      var countries = XDocument.Parse(xml).Descendants("Name").Select(arg => arg.Value).ToList(); 
      countriesDropDownList.DataSource = countries; 
      countriesDropDownList.DataBind(); 
     } 
    } 
} 
+0

非常感謝!這真的簡化了我的代碼。 – multiv123 2011-05-08 03:16:25

+0

我想添加下拉列表選擇到sql數據庫,但是當我通過在我的插入語句中使用ddlCountry.SelectedValue來做到這一點時,只有下拉列表中的第一個值顯示在表中。我應該使用onselectedindexchanged以某種方式存儲值嗎?我應該使用哪些代碼? TIA。 – multiv123 2011-05-09 16:42:16