• c#数据绑定(3)——数据转化为信息


    文/嶽永鹏

      本文主要在数据绑定1和2中新增了DataSet对象,练习了如何在DataSet中添加表、关系和约束,同时本文也简要的介绍了如何将数据转化为信息。

    目标界面:

    XAML代码:

     <Grid Margin="2">
                <Grid.RowDefinitions>
                    <RowDefinition  Height="Auto"/>
                    <RowDefinition  Height="Auto"/>
                    <RowDefinition  Height="Auto"/>
                    <RowDefinition />
                </Grid.RowDefinitions>
                <GroupBox Header="Customer" Grid.Row="0" Padding="5">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition />
                            <RowDefinition />
                            <RowDefinition/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Row="0" Grid.Column="0" Text="CustomerID" Margin="2" HorizontalAlignment="Right" VerticalAlignment="Center"/>
                        <TextBox Grid.Row="0" Grid.Column="1" Margin="2" Name="tbxCustomerID" Text="{Binding Path=CID}"/>
                        <TextBlock Grid.Row="1" Grid.Column="0" Text="CustomerName" Margin="2" HorizontalAlignment="Right" VerticalAlignment="Center"/>
                        <TextBox Grid.Row="1" Grid.Column="1" Margin="2" Name="tbxCustomerName" Text="{Binding Path=Name}"/>
                        <Button Grid.Row="2" Grid.Column="1" Content="Add New Customer" Margin="2" Name="btnAddCustomer" Padding="2" Click="btnAddCustomer_Click" />
                    </Grid>
                </GroupBox>
                <GroupBox Header="Order" Grid.Row="1" Padding="5">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition />
                            <RowDefinition />
                            <RowDefinition />
                            <RowDefinition />
                            <RowDefinition />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Row="0" Grid.Column="0" Text="OrderID" Margin="2" HorizontalAlignment="Right" VerticalAlignment="Center"/>
                        <TextBox Grid.Row="0" Grid.Column="1" Margin="2" Name="tbxOrderID" Text="{Binding Path=OID}"/>
                        <TextBlock Grid.Row="1" Grid.Column="0" Text="OrderName" Margin="2" HorizontalAlignment="Right" VerticalAlignment="Center"/>
                        <TextBox Grid.Row="1" Grid.Column="1" Margin="2" Name="tbxOrderName" Text="{Binding Path=Customer}"/>
                        <TextBlock Grid.Row="2" Grid.Column="0" Text="Subtotal" Margin="2" HorizontalAlignment="Right" VerticalAlignment="Center"/>
                        <TextBox Grid.Row="2" Grid.Column="1" Margin="2" Name="tbxSubtotal" Text="{Binding Path=Subtotal}"/>
                        <TextBlock Grid.Row="3" Grid.Column="0" Text="TaxRate" Margin="2" HorizontalAlignment="Right" VerticalAlignment="Center"/>
                        <TextBox Grid.Row="3" Grid.Column="1" Margin="2" Name="tbxTaxRate" Text="{Binding Path=TaxRate}"/>
                        <Button Grid.Row="4" Grid.Column="1" Content="Add New Order" Margin="2" Name="btnAddOrder" Padding="2" Click="btnAddOrder_Click" />
                    </Grid>
                </GroupBox>
                <ListView Name="lstDisplayCustomer" ItemsSource="{Binding}" Grid.Row="2"  Margin="2" MinHeight="150">
                    <ListView.View>
                        <GridView>
                            <GridView.Columns>
                                <GridViewColumn  Header="CustomerID" DisplayMemberBinding="{Binding CID}"/>
                                <GridViewColumn Header="CustomerName" DisplayMemberBinding="{Binding Name}"/>
                                <GridViewColumn Header="Total" DisplayMemberBinding="{Binding OrderTotals}" />
                            </GridView.Columns>
                        </GridView>
                    </ListView.View>
                </ListView>
                <ListView Name="lstDisplayOrder" ItemsSource="{Binding}" Grid.Row="3"  Margin="2" MinHeight="150">
                    <ListView.View>
                        <GridView>
                            <GridView.Columns>
                                <GridViewColumn  Header="OrderID" DisplayMemberBinding="{Binding OID}"/>
                                <GridViewColumn Header="Customer" DisplayMemberBinding="{Binding Customer}"/>
                                <GridViewColumn Header="Subtotal" DisplayMemberBinding="{Binding Subtotal}"/>
                                <GridViewColumn Header="TaxRate"  DisplayMemberBinding="{Binding TaxRate}" />
                                <GridViewColumn Header="Total"    DisplayMemberBinding="{Binding Total}"/>
                            </GridView.Columns>
                        </GridView>
                    </ListView.View>
                </ListView>
            </Grid>
    View Code

    C# 代码:

    DataSet business = NewData();
    
            public MainWindow()
            {
                InitializeComponent();
                
            }
    
            private static DataSet NewData()
            {
                //-----build the parent table and add some data
                DataTable customer = new DataTable("Customer");
                customer.Columns.Add("CID", typeof(Int32));
                customer.Columns.Add("Name", typeof(string));
                //-------build the child table and add some data.
                DataTable orders = new DataTable("Order");
                orders.Columns.Add("OID", typeof(int));
                orders.Columns.Add("Customer", typeof(Int32));
                orders.Columns.Add("Subtotal", typeof(decimal));
                orders.Columns.Add("TaxRate", typeof(decimal));
                orders.Columns.Add("Total",typeof(decimal),"Subtotal*(1+TaxRate)");
    
                //-----Link the table within a Dataset.
                DataSet business = new DataSet();
                business.Tables.Add(customer);
                business.Tables.Add(orders);
                business.Relations.Add(customer.Columns["CID"],orders.Columns["Customer"]);
                customer.Columns.Add("OrderTotals" ,typeof(decimal),"Sum(Child.Total)");
                return business;
            }
    
            private void btnAddCustomer_Click(object sender, RoutedEventArgs e)
            {
               //Vist datatable customer.
                DataTable customer=business.Tables["Customer"];
                NewMember(customer);
                lstDisplayCustomer.DataContext = customer;
            }
    
            private DataTable NewMember(DataTable table)
            {
                DataRow newRow = table.NewRow();
                newRow["CID"] = tbxCustomerID.Text;
                newRow["Name"] = tbxCustomerName.Text;
                table.Rows.Add(newRow);
                return table;
            }
    
            private DataTable NewMemberOrder(DataTable table)
            {
                DataRow newRow = table.NewRow();
                newRow["OID"] = tbxOrderID.Text;
                newRow["Customer"] = tbxOrderName.Text;
                newRow["Subtotal"] = tbxSubtotal.Text;
                newRow["TaxRate"] = tbxTaxRate.Text;
                table.Rows.Add(newRow);
                return table;
            }
    
            private void btnAddOrder_Click(object sender, RoutedEventArgs e)
            {
                //Vist datatable order.
                DataTable order = business.Tables["Order"];
                NewMemberOrder(order);
                lstDisplayOrder.DataContext = order;
            }
          
    View Code
  • 相关阅读:
    Windows消息传递机制详解
    TCP、UDP、IP协议分析
    桥模式
    单例模式
    WPF属性学习
    第六章 数组与索引器 6.1一维数组的声明,创建与初始化
    C#委托与事件习题
    Windows窗体应用程序四(制作随机加法练习器)
    用VS制作简易计算器(WPF)
    第五章 5.3类的静态成员,析造函数与析构函数(猫类)
  • 原文地址:https://www.cnblogs.com/YUEYongpeng/p/3504397.html
Copyright © 2020-2023  润新知