Silverlight调用WebService只能使用异步方式调用。所谓异步方式调用就是让调用方法的主线程不必同步等待在这个函数调用上,从而允许主线程继续执行它下面的代码。
Silverlight调用自定义的WebService分为四个步骤:
(1)、创建自定义的WebService
(2)、实现WebService
(3)、在Silverlight项目中添加服务引用
(4)、使用异步方式调用WebService
下面举例介绍:
比如说在MSSQL2000中建立一个名为SilverlightDB的数据库,里面包含一张表Product,里面有2个字段Name和Price,举例说明字段就随便用两个意思意思下。
在Web.Config文件中配置数据库连接字符串
<appSettings>
<add key="ConnectionString" value="Data Source=.;uid=sa;pwd=111111;Database=SilverlightDB"/>
</appSettings>
接着定义一个和Product表对应的实体类Product.cs
[Serializable]
public class Product
{
public string Name { get; set; }
public double Price { get; set; }
}
再接着是添加一个Web服务,文件名为ProductService.asmx
在其中添加一个获取产品列表的方法GetAllProduct
[WebMethod]
public List<Product> GetAllProduct()
{
List<Product> products= new List<Product>();
//这里是从数据库获取数据,方式可以是ADO.NET、LINQ to SQL或者是ADO.NET Entity Framework,以下是用最简单的ADO.NET来实现的
string connectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
string strSQL = "select * from Product";
SqlCommand cmd = new SqlCommand(strSQL, con);
SqlDataReader data = cmd.ExecuteReader();
while (data.Read())
{
Product product = new Product();
product.Name = data["Name"].ToString();
product.Price = double.Parse(data["Price"].ToString());
products.Add(product);
}
}
return products;
}
前台显示页面MainPage.xaml中添加一个ListBox用于显示数据
<ListBox x:Name="myBooks" Margin="101,144,158,124">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"></TextBlock>
<TextBlock Text="{Binding Price}"></TextBlock>
<TextBlock Text="---------------------------------------------------------------"></TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在MainPage.xaml.cs文件中编写调用WebService的代码进行数据绑定
private void LayoutRoot_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
// TODO: Add event handler implementation here.
ProductServiceReference.ProductServiceSoapClient client = new NetworkSample.ProductServiceReference.ProductServiceSoapClient();
//注册调用成功事件
client.GetAllProductCompleted += new EventHandler<NetworkSample.ProductServiceReference.GetAllProductCompletedEventArgs>(OnGetAllProductCompleted);
client.GetAllProductAsync();
}
private void OnGetAllProductCompleted(object sender, NetworkSample.ProductServiceReference.GetAllProductCompletedEventArgs e)
{
//检测调用是否成功
if (e.Error != null)
{
return;
}
myBooks.ItemsSource = e.Result;
}
至此,一个Silverlight调用自定义的WebService的案例就做好了。
- 前言
- VS2008打上SP1的补丁后安装了silverlight后出现未将对象引用设置到对象实例的解决办法
- Silverlight实现的简单拖拽效果
- Silverlight调用自定义的Web Service从数据库获取数据进行页面绑定
- asp.net页面调用silverlight
- Silverlight显示日期和时间
- Silverlight跑马灯效果实现代码
- Silverlight图片验证码生成代码
- 一个简单的Silverlight视频播放器
- Silerlight中利用TextBlock滚动显示
- Silverlight中实现类似Telerik的TileView控件效果
- Silverlight之Combox用法
- 利用Blend制作一个简单的用户控件外观
- aspx页面上传递参数给Silverlight插件的方法
- Silverlight中Divelements.SilverlightTools之路径是否存在判断
- Silverlight中的一些Convert整理
- Silverlight中上标和下标等特殊脚注字符实现
- Silverlight4 幻灯片实现
- 在Silverlight中嵌入HTML或aspx页面
- Silverlight中的图表控件visifire的使用
- Silverlight中DataGrid控件动态生成列并结合DataPager进行分页
- Silverlight Rectangle控件鼠标移入时的提示框
- Silverlight 之ComboBox控件选中项
- 后台控制改变Silverlight 中的Ellipse控件的Fill填充图片
- Silverlight关键字返红显示
- Silverlight中资源文件的引用
- Silverlight中通过调用WebService来显示数据库中以流形式保存的图片
- Silverlight 使用RadTreeView动态绑定数据
- 框架页中Silverlight和Web页面之间跳转和返回
- 一些Silverlight项目中的界面截图
- Silverlight之ScrollViewer控件的水平和竖直滚动条位置控制
- Silverlight中利用WCF获取客户端IP
- Silverlight DataGrid 多重表头实现
- Silverlight 一些网站收集
- Silverlight/WPF/Windows Phone 开发之MVVM设计模式之入门
- Telerik Silverlight 之Charting控件的使用
- Silverlight 案例链接收藏
- Silverlight获取Web路径
- Silverlight中利用Blend绘制可伸缩的Tab菜单
- Silverlight框架中定时监听预警信息,使用SL线程DispatcherTimer解决
- Silverlight DataGrid 数据绑定鼠标移入到内容项时显示类似ToolTip提示文本
- Silverlight插件安装失败,提示1603错误号的解决办法
- Silverlight之Frame传递多个参数并获取完整参数
- Silverlight页面在兼容/高速模式下出现滚动条的解决办法
- Silverlight添加服务引用Service Reference, 出现“自定义工具错误,无法生成服务引用”错误的解决办法
- Silverlight ListBox 控件使用介绍
- Silverlight RadTreeView 控件使用介绍
- Silverlight中播放声音mp3文件
- Silverlight TabControl和Accordion控件使用介绍
- Silverlight中多个storyboard顺序播放(代码实现)
- Silverlight 控件的ToolTip封装工具使用
- Silverlight导出图片需要的几个类