热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> Silverlight>>正文内容

“Silverlight+Webservice+Dataset”综合应用

发布时间:2009年02月25日点击数: 未知
学SL有一段时间了,可是总感觉缺少点什么,那就是实际应用,怎么能把SL应用到我的项目中呢?一直是一个难题,我是个懒人喜欢用Dataset来帮我做一些底层数据访问的工作,SL毕竟是表示层的技术,对数据访问是门外汉,只能用过wcf或webservice来实现异步调用,今天把我的学习笔记给大家看看,没有太高深的技术,只是共享而已,大家如果有别的方法欢迎指教!
本文实例源码下载
新建一个Silverlight应用程序,再选择web应用程序


在webapplication中添加一个数据集(Dataset),我用的是“NORTHWND.MDF”大家可以去ms网站去下载。


在查询里面添加一个
SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers WHERE (City LIKE '%' + @City + '%')

新建一个“CustomersClass.cs” 实体类
public class CustomersClass
    {
        public string CustomerID { get; set; }
        public string CompanyName { get; set; }
        public string ContactName { get; set; }
        public string ContactTitle { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
    }

为了操作方便,我只选择其中几个字段内容,大家有需要可以自己添加;
下面开始添加webservice,这个是重点:
public class SLWebService : System.Web.Services.WebService
    {    
        //实例化Dataset
        SLDataSetTableAdapters.CustomersTableAdapter Dal =  
new SilverlightCnblogs.Web.SLDataSetTableAdapters.CustomersTableAdapter();
        [WebMethod]
        public CustomersClass[] GetCustomersByCity(string City)
        {
            List<CustomersClass> CustomersC = new List<CustomersClass>();
            SLDataSet.CustomersDataTable DT = new SLDataSet.CustomersDataTable();
            DT = Dal.GetDataByCity(City);
            //foreach循环将dataset中数据取出
            foreach (SLDataSet.CustomersRow DD in DT.Rows)
            {
                CustomersClass CC = new CustomersClass();
                CC.Address = DD.Address.ToString();
                CC.City = DD.City.ToString();
                CC.CompanyName = DD.CompanyName.ToString();
                CC.ContactName = DD.ContactName.ToString();
                CC.ContactTitle = DD.ContactTitle.ToString();
                CC.CustomerID = DD.CustomerID.ToString();
                CustomersC.Add(CC);
            }

            System.Threading.Thread.Sleep(2000);  //延时一下为了看效果
           return CustomersC.ToArray();
        }

        [WebMethod]  
        public string HelloWorld()
        {
            return "Hello World";
        }

    }

最后别忘了把动态端口改成固定的!!

下面我来Silverlight,添加“服务引用”“发现”,这些大家都很熟了,不详细说了!
在Page.xaml文件中添加
点击展开



编写C#代码:
private void Seach_Click(object sender, RoutedEventArgs e)
        {
            this.Seach.IsEnabled = false;
            this.PBar.Visibility = Visibility.Visible;//显示进度条
            this.DataGrid.Opacity = 0.5;   //修改透明度
            //异步调用
            SC.GetCustomersByCityAsync(this.CityText.Text.ToString());
            SC.GetCustomersByCityCompleted +=  
new EventHandler<SilverlightCnblogs.ServiceReference1.GetCustomersByCityCompletedEventArgs>(SC_GetCustomersByCityCompleted);
        }


        void SC_GetCustomersByCityCompleted(object sender, SilverlightCnblogs.ServiceReference1.GetCustomersByCityCompletedEventArgs e)
        {   //异步调用完毕
              this.DataGrid.ItemsSource = e.Result;
            this.Seach.IsEnabled = true;
            this.PBar.Visibility = Visibility.Collapsed;
            this.DataGrid.Opacity = 1;
        }



本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作