Silverlight+WCF实现一个弹出选择框---Part 1

大家都知道微软的Silverlight是个可以在Mac OS, windowsLinux等多个操作系统工作的浏览器插件。而且开发出来的web程序将会是更加安全。

 

软件配置:

1.       Visual Studio 2008,

2.       Silverlight 2.

3.       SQL ServerNorthwind数据库。

 

设计要求:

下图所示,包含一个button和两个textbox。第一个textbox能够显示了输入数据,第二个textbox只能够显示数据,button按钮用来触发弹出的搜索框的事件。

 

弹出的搜索框将会显示一个datagrid,同时包含搜索功能,如下图所示:

 

这里有两种方法来把datagrid的数据显示到原来页面的第二个textbox中:

 

下面我们一步一步来创建这个项目。

 

第一步: 创建一个SilverlightWCF 项目。

1.       Visual Studio 2008, 新建一个Silverlight项目,起个名字叫做popformdemo,如下图所示:

 

2.       点击OK按钮后,会出现如下的提示:

 

然后在popformdemo项目下添加一个CusControl文件夹,如下图所示:

 

3.       Cuscontrol文件夹下面,添加一个Slilverlight user control文件, 命名为’PopForm’如下图:

 

 

第二步:创建一个WCF service项目:

这里又很多方式让silverlight插件访问数据库,最常用的是web servicesWCF。我在这个例子中将会使用WCF来实现。

1.       在解决方案下面,添加一个新的web应用程序起名字为’DaoWcf’,如下图:

  

2.       在新建的项目中添加一个WCFService并命名PopDataService如下图:

 

这时候就会新添加两个IpopDataService.csPOpDataService.svc文件:

 

3.       WCF Service项目的配置:

 DaoWcf项目中,右键属性, 设置local iis wev server:

然后修改web.config中的数据库连接:

 

再修改Service binding模式从wsHttpBindingbasicHttpBinding

 

第三步: WCF Service项目所用到的代码:

 

PopDataService.svc.cs文件,PopFormClass由一个ID和一个NAME属性

    [DataContract()]

    public class PopFormClass

    {

        [DataMember]

        public string ID { get; set; }

        [DataMember]

        public string NAME { get; set; }

}

 

IPopDataService.cs文件中,IPopDataService接口有3个方法。

    [ServiceContract]

    public interface IPopDataService

    {

        [OperationContract]

        List<PopFormClass> GetSqlCustomersData();

        [OperationContract]

        List<PopFormClass> GetSqlEmployeesData();

        [OperationContract]

        List<PopFormClass> GetSqlProductsData();

    }

IPopDataService的后台文件中吧三个抽象函数具体话:

public class PopDataService : IPopDataService

    {

        private string SqlConString;

        public PopDataService()

        {

            SqlConString = ConfigurationManager.ConnectionStrings["NorthWindDb"].ConnectionString;

        }

        public List<PopFormClass> GetSqlCustomersData()

        {

            List<PopFormClass> list = new List<PopFormClass>();

            try

            {

                list = GetPopData("select CustomerID, CompanyName from Customers order by 1");

            }

            catch (Exception ex)

            {

                throw ex;

            }

            return list;

        }

        public List<PopFormClass> GetSqlProductsData()

        {

            List<PopFormClass> list = new List<PopFormClass>();

            try

            {

                list = GetPopData("select ProductID, ProductName from Products order by 1");

            }

            catch (Exception ex)

            {

                throw ex;

            }

            return list;

        }

 

        public List<PopFormClass> GetSqlEmployeesData()

        {

            List<PopFormClass> list = new List<PopFormClass>();

            try

            {

                list = GetPopData("select EmployeeID, LastName, FirstName from Employees order by 1");

            }

            catch (Exception ex)

            {

                throw ex;

            }

            return list;

        }

 

GetPopData(string strSql)方法如下,它将会从数据库读取数据放到List<PopFormClass>:

        private List<PopFormClass> GetPopData(string strSql)

        {

            List<PopFormClass> list = new List<PopFormClass>();

            using (SqlConnection con = new SqlConnection(SqlConString))

            {

                con.Open();

                SqlCommand com = new SqlCommand(strSql, con);

                IDataReader dr = com.ExecuteReader();

                while (dr.Read())

                {

                    PopFormClass pf = new PopFormClass();

                    pf.ID = Convert.ToString(dr[0]);

                    pf.NAME = Convert.ToString(dr[1]);

                    list.Add(pf);

                }

            }            return list;

        }

 

最后是测试一下这个WCF项目是否正常工作:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值