C # 数据绑定(1)——将DataTabel的data添加ListView

文/嶽永鹏

目标界面:

 

功能:通过响应UI Textbox 的值向ListView 绑定新添加的纪录。

UI XAML 代码

 1 <Grid Margin="5">
 2             <Grid.ColumnDefinitions>
 3                 <ColumnDefinition Width="Auto"/>
 4                 <ColumnDefinition/>
 5             </Grid.ColumnDefinitions>
 6             <Grid.RowDefinitions>
 7                 <RowDefinition  Height="Auto"/>
 8                 <RowDefinition Height="Auto"/>
 9                 <RowDefinition Height="Auto"/>
10                 <RowDefinition Height="Auto"/>
11                 <RowDefinition Height="Auto"/>
12                 <RowDefinition Height="Auto"/>
13                 <RowDefinition/>
14             </Grid.RowDefinitions>
15             <TextBlock  Grid.Row="0" Grid.Column="0" Text="商品名称" HorizontalAlignment="Right" VerticalAlignment="Center" />
16             <TextBox Grid.Row="0" Grid.Column="1" Margin="2" VerticalAlignment="Center" Text="{Binding Path=ComName}" Name="tbkName"/>
17             <TextBlock  Grid.Row="1" Grid.Column="0" Text="商品进货单价" HorizontalAlignment="Right" VerticalAlignment="Center" />
18             <TextBox Grid.Row="1" Grid.Column="1" Margin="2" VerticalAlignment="Center" Text="{Binding Path=ComInPrice}" Name="tbkInPrice"/>
19             <TextBlock  Grid.Row="2" Grid.Column="0" Text="商品零售价格" HorizontalAlignment="Right" VerticalAlignment="Center" />
20             <TextBox Grid.Row="2" Grid.Column="1" Margin="2" VerticalAlignment="Center" Text="{Binding Path=ComOutPrice}" Name="tbkOutPrice"/>
21             <TextBlock  Grid.Row="3" Grid.Column="0" Text="进货数量" HorizontalAlignment="Right" VerticalAlignment="Center" />
22             <TextBox Grid.Row="3" Grid.Column="1" Margin="2" VerticalAlignment="Center" Text="{Binding Path=ComOutPrice}" Name="tbkComCount"/>
23             
24             <Button Grid.Row="4" Grid.Column="1" Content="添加新纪录" Margin="2" Padding="2" Name="btnAdd" Click="btnAdd_Click" />
25             
26             <TextBlock Grid.Row="5" Grid.ColumnSpan="2"  HorizontalAlignment="Stretch"  VerticalAlignment="Center"  Background="Black" />
27             
28             <ListView Name="lstDisplay" ItemsSource="{Binding}" Grid.Row="6" Grid.ColumnSpan="2">
29                 <ListView.View>
30                     <GridView>
31                         <GridView.Columns>
32                             <GridViewColumn  Header="AutoID" DisplayMemberBinding="{Binding AutoID}"/>
33                             <GridViewColumn Header="商品名称" DisplayMemberBinding="{Binding ComName}"/>
34                             <GridViewColumn Header="进货价格" DisplayMemberBinding="{Binding Path=ComInPrice,StringFormat={}{0:c}}"/>
35                             <GridViewColumn Header="零售价格" DisplayMemberBinding="{Binding Path=ComOutPrice,StringFormat={}{0:c}}"/>
36                             <GridViewColumn Header="进货数量" DisplayMemberBinding="{Binding ComCount}"/>
37                         </GridView.Columns>
38                     </GridView>
39                 </ListView.View>
40             </ListView>
41         </Grid>
View Code

c# 后台代码

 DataTable Commodity = newTable();

        public MainWindow()
        {
            InitializeComponent();
            //DataTable Commodity = newTable();
          
        }

       

        private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            
            addNewMember(Commodity);
            lstDisplay.DataContext = Commodity;

        }

        private void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            Button b = sender as Button;
            Int32 AutoID = Convert.ToInt32(b.CommandParameter);
            delMember(Commodity, AutoID);
            lstDisplay.DataContext = Commodity;
            lstDisplay.Items.Refresh();

        }

        private DataTable delMember(DataTable Table,Int32 laction)
        {
            //Deleting  a existed row in datatable Commodity;
            DataRow delRow = Table.Rows.Find(laction);
            Table.Rows.Remove(delRow);
            return Table;
        }

        private  DataTable addNewMember(DataTable Table)
        {
            

            //inserting a new row in datatable Commodity;

            DataRow newRow = Table.NewRow();
            newRow["ComName"] = tbkName.Text;
            newRow["ComInPrice"] = tbkInPrice.Text;
            newRow["ComOutPrice"] = tbkOutPrice.Text;
            newRow["ComCount"] = tbkComCount.Text;
            Table.Rows.Add(newRow);
            return Table;
        }



        private static DataTable newTable()
        {
            //Create a new table named Commodity
            DataTable commodity = new DataTable("Commodity");


            //instert new columns
            DataColumn auto = new DataColumn("AutoID", typeof(Int32));
            //setting the column auto increment 
            auto.AutoIncrement = true;
            commodity.Columns.Add(auto);
            commodity.Columns.Add("ComName", typeof(string));
            commodity.Columns.Add("ComInPrice", typeof(double));
            commodity.Columns.Add("ComOutPrice", typeof(double));
            commodity.Columns.Add("ComCount", typeof(System.Int32));
            commodity.PrimaryKey = new DataColumn[] { commodity.Columns[0] };
            return commodity;
        }

       
      

        
View Code

 

posted @ 2013-12-30 16:44  碧风Befeng  阅读(630)  评论(0编辑  收藏  举报