微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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项目是否正常工作:

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐