65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Windows 8 应用商店应用中通过 Web 服务访问数据 - VS2012

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2012 年 10 月 24 日

CPOL

1分钟阅读

viewsIcon

26566

使用 Web 服务或 WCF 在 Windows 应用商店应用的网格视图控件中显示数据

介绍 

本文档用于将 SQL 数据库中的数据显示到 GridView 控件中。该应用程序是在 VS 2012 中使用 Windows 应用商店应用项目创建的。我们通过 Web 服务 / WCF 服务访问数据。

使用代码

步骤 1:需要创建并托管 Web 服务。在我的 Web 服务方法中,从 SQL Server 数据库中提取数据,并将方法的输出格式化为 XML 字符串。

步骤 2:从 VS2012 创建 Windows 应用商店应用项目。

步骤 3:添加服务引用(Web 服务/WCF 服务),命名为 CMHLocal。

步骤 4:在应用程序的 Model 文件夹中创建用于通过 Web 服务获取数据的类文件(文件名为:Resort.cs)。以下代码是类文件的示例。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloWorld.Model
{
   public class GetResortMaster
    {
        private string m_ResortID;
        private string m_ResortFullName;
        private string m_ResortShortName;
        private string m_ResortAddress;
        private string m_Status;
        private string m_CVNotes;
        private string m_GuestCVNotes;
        private string m_VenueCompCVNotes;

        public string ResortID
        {
            get { return m_ResortID; }
            set { m_ResortID = value; }
        }
        public string ResortFullName
        {
            get { return m_ResortFullName; }
            set { m_ResortFullName = value; }
        }
        public string ResortShortName
        {
            get { return m_ResortShortName; }
            set { m_ResortShortName = value; }
        }
        public string ResortAddress
        {
            get { return m_ResortAddress; }
            set { m_ResortAddress = value; }
        }
        public string Status
        {
            get { return m_Status; }
            set { m_Status = value; }
        }
        public string CVNotes
        {
            get { return m_CVNotes; }
            set { m_CVNotes = value; }
        }
        public string GuestCVNotes
        {
            get { return m_GuestCVNotes; }
            set { m_GuestCVNotes = value; }
        }
        public string VenueCompCVNotes
        {
            get { return m_VenueCompCVNotes; }
            set { m_VenueCompCVNotes = value; }
        }
    }
}

步骤 5:在您的 XAML 页面中,需要放置按钮和网格视图控件。例如,我创建了 MainPage.xaml 页面。需要在设计窗口中粘贴以下代码以创建按钮和网格视图控件。

<StackPanel Grid.Row="1" Margin="120,30,0,0">
    <Button x:Name="btnDisplay" Click="DisplayData" />
    <GridView x:Name="lvResort" ScrollViewer.VerticalScrollBarVisibility="Visible" 
           ItemsSource="{Binding}" HorizontalAlignment="Left" 
           Width="1070" Height="800">
        <GridView.ItemTemplate>
            <DataTemplate>
                <Border BorderBrush="Red" Background="LightBlue" BorderThickness="2">
                    <StackPanel Orientation="Vertical" Height="200">
                        <TextBlock Text="Resort Details:" Foreground="BlueViolet"/>
                        <TextBlock x:Name="txtResortID" Text="{Binding ResortID}" 
                          Padding="0,0,10,0" Width="50" HorizontalAlignment="Left"/>
                        <TextBlock x:Name="txtResortFName" TextWrapping="Wrap" 
                          Text="{Binding ResortFullName}" Padding="0,0,10,0" 
                          Width="200" HorizontalAlignment="Left"/>
                        <TextBlock TextWrapping="Wrap" Text="{Binding ResortShortName}" 
                          Padding="0,0,10,0" Width="200" HorizontalAlignment="Left"/>
                        <TextBlock TextWrapping="Wrap" Text="{Binding ResortAddress}" 
                          Padding="0,0,10,0" Width="200" HorizontalAlignment="Left"/>
                        <TextBlock TextWrapping="Wrap" Text="{Binding Status}" 
                          Padding="0,0,10,0" Width="50" HorizontalAlignment="Left"/>
                    </StackPanel>
                </Border>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
</StackPanel>

步骤 6:以下代码用于按钮单击事件,以在 MainPage.xaml.cs 文件中的网格视图控件中显示数据。

从以下代码中调用 Web 服务方法,并将方法的输出获取到字符串对象中。例如,我的 Web 服务方法输出格式为 XML。因此,使用 Resort.cs 将 XML 字符串转换为类对象。

private async void DisplayData(object sender, RoutedEventArgs e)
{
    CMHLocal.CMHServiceClient cmhlocal1 = new CMHLocal.CMHServiceClient();
    string x = await cmhlocal1.GetResortMasterDetailsAsync();
    XDocument xdoc = XDocument.Parse(x);
    IEnumerable<Model.GetResortMaster> getRes = from gr in xdoc.Descendants("GetResortMaster")
                                                select new Model.GetResortMaster
                                                {
                                                    ResortID = (string)gr.Attribute("ResortID"),
                                                    ResortFullName = (string)gr.Attribute("ResortFullName"),
                                                    ResortShortName = (string)gr.Attribute("ResortShortName"),
                                                    ResortAddress = (string)gr.Attribute("ResortAddress"),
                                                    Status=(string)gr.Attribute("Status")
                                                };
    lvResort.ItemsSource = getRes;
}

步骤 6:按下 'F5' 运行应用程序,然后单击按钮以在 GridView 控件中查看详细信息。

© . All rights reserved.