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

时间:2023-03-10 06:46:35
C # 数据绑定(1)——将DataTabel的data添加ListView

文/嶽永鹏

目标界面:

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

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

UI XAML 代码

 <Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="商品名称" HorizontalAlignment="Right" VerticalAlignment="Center" />
<TextBox Grid.Row="0" Grid.Column="1" Margin="2" VerticalAlignment="Center" Text="{Binding Path=ComName}" Name="tbkName"/>
<TextBlock Grid.Row="1" Grid.Column="0" Text="商品进货单价" HorizontalAlignment="Right" VerticalAlignment="Center" />
<TextBox Grid.Row="1" Grid.Column="1" Margin="2" VerticalAlignment="Center" Text="{Binding Path=ComInPrice}" Name="tbkInPrice"/>
<TextBlock Grid.Row="2" Grid.Column="0" Text="商品零售价格" HorizontalAlignment="Right" VerticalAlignment="Center" />
<TextBox Grid.Row="2" Grid.Column="1" Margin="2" VerticalAlignment="Center" Text="{Binding Path=ComOutPrice}" Name="tbkOutPrice"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="进货数量" HorizontalAlignment="Right" VerticalAlignment="Center" />
<TextBox Grid.Row="3" Grid.Column="1" Margin="2" VerticalAlignment="Center" Text="{Binding Path=ComOutPrice}" Name="tbkComCount"/> <Button Grid.Row="4" Grid.Column="1" Content="添加新纪录" Margin="2" Padding="2" Name="btnAdd" Click="btnAdd_Click" /> <TextBlock Grid.Row="5" Grid.ColumnSpan="2" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="Black" /> <ListView Name="lstDisplay" ItemsSource="{Binding}" Grid.Row="6" Grid.ColumnSpan="2">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="AutoID" DisplayMemberBinding="{Binding AutoID}"/>
<GridViewColumn Header="商品名称" DisplayMemberBinding="{Binding ComName}"/>
<GridViewColumn Header="进货价格" DisplayMemberBinding="{Binding Path=ComInPrice,StringFormat={}{0:c}}"/>
<GridViewColumn Header="零售价格" DisplayMemberBinding="{Binding Path=ComOutPrice,StringFormat={}{0:c}}"/>
<GridViewColumn Header="进货数量" DisplayMemberBinding="{Binding ComCount}"/>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
</Grid>

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[] };
return commodity;
}