学习silverlight基础之绑定数据到页面
上一章我们创建新的Silverlight应用程序,这时候我们需要把数据库中数据通过WCF查询出来递交给Silverlight客户端展示
在我们启用WCF后(WCF命名为DBService),打开DBService定义一个查询数据库的服务ExecSqlQuery,返回一个自己定义的数据契约类DataPage的集合类型,注意一定要分别在方法和类名称前加上[OperationContract]和[DataContract]的属性噢,并且类下面的每个属性都必须加上[DataMember()],部分代码如下:
1 [OperationContract]
2 public List<DataPage> ExecSqlQuery(string exSql)
3 {
4 string connectionString = WebConfigurationManager.AppSettings["DbServiceConnectionString"];
5 SqlConnection sqlConn = null;
6
7 if ((sqlConn != null) && (sqlConn.State != ConnectionState.Closed))
8 {
9 sqlConn.Open();
10 }
11 else
12 {
13 sqlConn = new SqlConnection(connectionString);
14 sqlConn.Open();
15 }
16 SqlDataAdapter data = new SqlDataAdapter(exSql, sqlConn);
17 DataSet ds = new DataSet();
18 data.Fill(ds, "djb");
19 List<DataPage> djInfos = new List<DataPage>();
20 DataPage djInfo = new DataPage();
21 HashObjectList hash = new HashObjectList();
22 for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
23 {
24 djInfo.accountTime = ds.Tables[0].Rows[i]["accountTime"].ToString();
25 djInfo.code = ds.Tables[0].Rows[i]["code"].ToString();
26 djInfo.date = ds.Tables[0].Rows[i]["date"].ToString();
27 djInfo.dj_stste = (int)ds.Tables[0].Rows[i]["dj_stste"];
28 djInfo.dj_type = (int)ds.Tables[0].Rows[i]["dj_type"];
29 djInfo.indexId = (int)ds.Tables[0].Rows[i]["indexId"];
30 djInfo.summery = ds.Tables[0].Rows[i]["summery"].ToString();
31 djInfo.total = (decimal)ds.Tables[0].Rows[i]["total"];
32 djInfo.wldwid = (int)ds.Tables[0].Rows[i]["wldwid"];
33 djInfos.Add(djInfo);
34 }
35 return djInfos;
36 }
DataPage类的定义:
1 namespace MySlPro.Web
2 {
3 [DataContract]
4 public class DataPage
5 {
6 [DataMember()]
7 public int indexId { get; set; }
8 [DataMember()]
9 public string date { get; set; }
10 [DataMember()]
11 public string code { get; set; }
12 [DataMember()]
13 public int dj_type { get; set; }
14 [DataMember()]
15 public string summery { get; set; }
16 [DataMember()]
17 public string comment { get; set; }
18 [DataMember()]
19 public int wldwid { get; set; }
20 [DataMember()]
21 public int dj_stste { get; set; }
22 [DataMember()]
23 public decimal total { get; set; }
24 [DataMember()]
25 public string accountTime { get; set; }
26 }
27 }
然后重新生成一次;
接下来,让我们在Silverlight客户端调用
在引用部分添加服务引用,输入WCF服务的地址(这里是本机输入一个 . 的符号就好了),点击发现:

接下来,我们在MainPage页面中拖入RadGridView控件(这是一套用户控件,可以去http://www.telerik.com/下载)
然后在MainPage的构造方法中键入如下代码:
1 string exSql = "select * from t_dj_p_index";
2 EndpointAddress address = new EndpointAddress("http://localhost:1636/DBService.svc");
3 DBServiceClient client = new DBServiceClient(new BasicHttpBinding(), address);
4 client.ExecSqlQueryCompleted += new EventHandler<ExecSqlQueryCompletedEventArgs>(C_ExecSqlQueryCompleted);
5 client.ExecSqlQueryAsync(exSql);
找不到C_ExecSqlQueryCompleted? 没错,我们还要定义这个委托方法,
1 private void C_ExecSqlQueryCompleted(object sender, ExecSqlQueryCompletedEventArgs e)
2 {
3 radGridView1.ItemsSource = e.Result;//将e.Result中的数据源绑定到控件上
4
5 radGridView1.IsReadOnly = true;
6
7 }
调试运行!

阅读全文
类别:Silverlight 查看评论
浙公网安备 33010602011771号