SL 3 多表資料顯示

來源:互聯網
上載者:User

本樣本是一個關係SL 3 三張表資料的顯示問題,運行結果如下所示:


表關係如所示:

 
這些資料的顯示都是通過調用後台服務WCF,支援資料顯示;

後台服務代碼如下所示:

[ServiceContract(Namespace = "對外提供資料服務")]   [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]   public class DataServices   {       // 在此處添加更多操作並使用 [OperationContract] 標記它們       [OperationContract]       public List<Customers> GetCustomerAll()       {           MyDataDataContext db = new MyDataDataContext();           return db.Customers.ToList();       }       [OperationContract]       public List<Customers> GetCustomerByID(string CustomerID)       {           MyDataDataContext db = new MyDataDataContext();           var query = from customer in db.Customers                       where customer.CustomerID == CustomerID                       select customer;           return query.ToList();       }       [OperationContract]       public List<Orders> GetOrders(string customerID)       {           MyDataDataContext datacontext = new MyDataDataContext();           return (from order in datacontext.Orders                   where order.CustomerID == customerID                   select order).ToList();       }       [OperationContract]       public List<Order_Details> GetOrderDetails(int orderID)       {           MyDataDataContext datacontext = new MyDataDataContext();           return (from orderdetail in datacontext.Order_Details                   where orderdetail.OrderID == orderID                   select orderdetail).ToList();       }   }
後台調用WCF服務代碼如下:
DataServiceClient.DataServicesClient svc = new DataServiceClient.DataServicesClient();       public MainPage()       {           InitializeComponent();       }       private void lstCustomers_Loaded(object sender, RoutedEventArgs e)       {           this.txtStatus.Text = "Loading customers...";           svc.GetCustomerAllCompleted += new EventHandler<GetCustomerAllCompletedEventArgs>
(svc_GetCustomerAllCompleted);           svc.GetCustomerAllAsync();       }       void svc_GetCustomerAllCompleted(object sender, GetCustomerAllCompletedEventArgs e)       {           if (e.Error == null)           {               this.lstCustomers.ItemsSource = e.Result;               this.txtStatus.Text = string.Empty;           }           else           {               this.txtStatus.Text =                   "Error occurred while loading customers from database";           }       }       private void lstCustomers_SelectionChanged(object sender, SelectionChangedEventArgs e)       {           CAL.SLData.DataServiceClient.Customers selectedCustomer = this.lstCustomers.SelectedItem 
as CAL.SLData.DataServiceClient.Customers;           {               this.txtStatus.Text = "Loading orders...";               svc.GetOrdersCompleted +=                   delegate(object eventSender, GetOrdersCompletedEventArgs eventArgs)                   {                       if (eventArgs.Error == null)                       {                           this.dgOrders.ItemsSource = eventArgs.Result;                           this.txtStatus.Text = string.Empty;                       }                       else                       {                           this.txtStatus.Text =                               "Error occurred while loading orders from database";                       }                   };               svc.GetOrdersAsync(selectedCustomer.CustomerID);           }       }       private void dgOrders_SelectionChanged(object sender, EventArgs e)       {           CAL.SLData.DataServiceClient.Orders selectedOrder = this.dgOrders.SelectedItem as Orders;           if (selectedOrder != null)           {               this.txtStatus.Text = "Loading order details...";               svc.GetOrderDetailsCompleted +=                   (eventSender, eventArgs) =>                   {                       if (eventArgs.Error == null)                       {                           this.dgOrderDetails.ItemsSource = eventArgs.Result;                           this.txtStatus.Text = string.Empty;                       }                       else                       {                           this.txtStatus.Text =                               "Error occurred while loading order details from database";                       }                   };               svc.GetOrderDetailsAsync(selectedOrder.OrderID);           }       }       private void dgOrderDetails_AutoGeneratingColumn(object sender,
 DataGridAutoGeneratingColumnEventArgs e)       {           if (e.Column.Header.ToString() == "OrderID")               e.Column.Visibility = Visibility.Collapsed;       }
UI 頁面代碼如下所示:
 
<Grid x:Name="LayoutRoot" Background="White">        <Grid.RowDefinitions>            <RowDefinition Height="55" x:Name="HeaderRow" />            <RowDefinition Height="*" x:Name="ContentRow"/>            <RowDefinition Height="20" x:Name="FooterRow"/>        </Grid.RowDefinitions>        <Grid.ColumnDefinitions>            <ColumnDefinition Width="*" />        </Grid.ColumnDefinitions>        <!-- Heading -->        <TextBlock x:Name="txtHeader" Grid.Row="0"                    FontSize="20" Margin="5,5" Foreground="Blue"                   Text="My First Data Application in Silverlight">        </TextBlock>        <!-- A textblock in the footer to be used as an Status bar -->        <TextBlock x:Name="txtStatus" Grid.Row="2"                FontSize="10" Margin="5,0" Foreground="Red">        </TextBlock>        <!-- Content Holder -->        <Grid x:Name="ContentGrid" Grid.Row="1" Margin="5">            <Grid.RowDefinitions>                <RowDefinition Height=".6*" />                <RowDefinition Height=".4*" />            </Grid.RowDefinitions>            <Grid.ColumnDefinitions>                <ColumnDefinition Width="200" />                <ColumnDefinition Width="*" />            </Grid.ColumnDefinitions>            <!-- Listbox for displaying customers -->            <ListBox x:Name="lstCustomers" Grid.Column="0" Grid.RowSpan="2"                     DisplayMemberPath="ContactName"                     Loaded="lstCustomers_Loaded"                     SelectionChanged="lstCustomers_SelectionChanged">            </ListBox>            <!-- DataGrid for displaying orders of a customer                 (with autogenerated columns) -->            <data:DataGrid x:Name="dgOrders" Grid.Row="0" Grid.Column="1"                            AutoGenerateColumns="True"                           SelectionChanged="dgOrders_SelectionChanged">            </data:DataGrid>            <!-- DataGrid for displaying orderdetais for an order -->            <data:DataGrid x:Name="dgOrderDetails" Grid.Row="1" Grid.Column="1"                            AutoGenerateColumns="True"                           AutoGeneratingColumn="dgOrderDetails_AutoGeneratingColumn">            </data:DataGrid>        </Grid>    </Grid>

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.