WPF表格添加行和删除行
我们处理程序项目往往会涉及多表新增,这是的部分数据就是需要存放到表格中进行多条数据循环新增,那么我们就要给表格添加行来输入需要新增的数据;在HTML我们可以通过添加TR标签添加行,在窗体程序也一样我们就给Table添加Rows();
下面是一个简单的实例:
1、 先定义一个表格,定义好表头的行和列以及绑定的值还有控件,我这里列定义了一个删除按钮,设定好基本属性;代码如下
----------新增行按钮----------
<Button x:Name="btn_InsertBarRows" Content="新增" Background="GreenYellow" Height="30" Width="45" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10,2,0,1.6" Foreground="White" Grid.ColumnSpan="2" Click="Btn_InsertBarRows_Click"></Button>
----------数据表格----------
<DataGrid x:Name="dgInsertBar" IsReadOnly="False" AutoGenerateColumns="False" Background="white"
CanUserResizeColumns="False" CanUserResizeRows="False" SelectionMode="Single"
CanUserReorderColumns="False" AlternationCount="2" RowHeaderWidth="0" CanUserAddRows="False"
Margin="0,10,1,-26" Height="255" VerticalAlignment="Top" MouseUp="DgInsertBar_MouseUp">
<DataGrid.Columns>
<DataGridTextColumn Header="序号" Binding="{Binding Num}" Width="50"></DataGridTextColumn>
<DataGridTextColumn Header="货号" Binding="{Binding CommodityNo}" Width="120"></DataGridTextColumn>
<DataGridTextColumn Header="条码" Binding="{Binding BarCode}" Width="140"></DataGridTextColumn>
<DataGridTemplateColumn Header="删除" Width="40">
<DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<Button x:Name="btn_DeleteCar" Content="删除" Foreground="Red" Background="Red" Click="Btn_DeleteCar_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
2、 后台代码:
//给表格添加行
int UnitRowIndex=-1; //单位行索引
public DataTable dg; //商品条码表格
private void Btn_InsertBarRows_Click(object sender, RoutedEventArgs e)
{
try
{
//实例化表数据表
dg = new DataTable();
//给表添加列,并绑定值以及值得类型(跟页面窗体值对应) dg.Columns.Add("CommodityNo", typeof(string));
dg.Columns.Add("BarCode", typeof(int));
//判断表格行是否大于0
if (dgInsertBar.Items.Count > 0)
{
dg = ((DataView)dgInsertBar.ItemsSource).Table;
int j = dg.Rows.Count;//获取行数
dg.Rows.Add();//添加行
dg.Rows[j]["Num"] = j + 1; //给表格自增排序
}
else
{
dg.Rows.Add();
dg.Rows[0]["Num"] = "1";//默认第一行为序号为1
}
//绑定窗体页面表格
dgInsertBar.ItemsSource = dg.DefaultView;
}
catch (Exception)
{
throw;
}
}
//删除条码表格行
private void Btn_DeleteCar_Click(object sender, RoutedEventArgs e)
{
MessageBoxResult dr = MessageBox.Show("是否删除当前条码?", "系统提示", MessageBoxButton.OKCancel, MessageBoxImage.Question);//弹出确定对话框
if (dr == MessageBoxResult.OK)
{
dg.Rows.RemoveAt(BarRowIndex);//移除指定索引的行
}
for (int i = 1; i <= dg.Rows.Count;i++)
{
dg.Rows[i - 1]["Num"] = i; //重新给表格排序
}
//删除行后重新绑定表格
dgInsertBar.ItemsSource = dg.DefaultView;
}
//表格鼠标弹起事件
private void DgInsertBar_MouseUp(object sender, MouseButtonEventArgs e)
{
//判断是否选中
if (dgInsertBar.SelectedIndex == -1)
{
BarRowIndex = Convert.ToInt32(dgInsertBar.SelectedIndex); //获取被选中行索引
}
}
页面结果如图所示: