WPF表格添加行和删除行

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); //获取被选中行索引           
            }
        }
        

页面结果如图所示:
在这里插入图片描述

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF(Windows Presentation Foundation)是一种用于开发 Windows 应用程序的框架,它提供了丰富的用户界面元素。在 WPF 中,要在表格单元格中添加下拉框,可以使用 ComboBox 控件。 首先,要创建一个表格,可以使用 DataGrid 控件。在 DataGrid 的列定义中,可以定义一个 DataGridComboBoxColumn 来实现下拉框的功能。 ``` <DataGrid> <DataGrid.Columns> <DataGridComboBoxColumn Header="下拉框列" SelectedItemBinding="{Binding ComboBoxValue}"> <DataGridComboBoxColumn.ElementStyle> <Style TargetType="{x:Type ComboBox}"> <Setter Property="ItemsSource" Value="{Binding ComboBoxItems}" /> </Style> </DataGridComboBoxColumn.ElementStyle> <DataGridComboBoxColumn.EditingElementStyle> <Style TargetType="{x:Type ComboBox}"> <Setter Property="ItemsSource" Value="{Binding ComboBoxItems}" /> </Style> </DataGridComboBoxColumn.EditingElementStyle> </DataGridComboBoxColumn> </DataGrid.Columns> </DataGrid> ``` 上述代码中,通过 SelectedItemBinding 属性将选中的值绑定到 ViewModel 中的 ComboBoxValue 属性上。ComboBoxItems 属性则是用来设置下拉框中的选项列表。 在 ViewModel 中,需要定义 ComboBoxValue 和 ComboBoxItems 属性,并设置 ComboBoxItems 的初始值。 ``` public class MyViewModel : INotifyPropertyChanged { public ObservableCollection<string> ComboBoxItems { get; set; } private string _comboBoxValue; public string ComboBoxValue { get { return _comboBoxValue; } set { _comboBoxValue = value; OnPropertyChanged(nameof(ComboBoxValue)); } } public MyViewModel() { ComboBoxItems = new ObservableCollection<string> { "选项1", "选项2", "选项3" }; } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } ``` 以上就是在 WPF 表格单元格中使用下拉框的基本方法。需要注意的是,要在表格单元格中显示下拉框,需要在 ElementStyle 和 EditingElementStyle 中分别设置下拉框的样式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值