WPF DataGrid 新增、删除行

//前台界面

<Window x:Class="Demo.DataGrid"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Demo"
        mc:Ignorable="d"
        Title="DataGrid" Height="550" Width="800">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="156*"/>
            <ColumnDefinition Width="241*"/>
        </Grid.ColumnDefinitions>
        <TabControl x:Name="tabControl3" Margin="0,0,0,0" Grid.ColumnSpan="2">
            <TabItem Header="选项卡一" Width="75">
                <StackPanel Margin="0,0,0,-9">
                    <DataGrid x:Name="dgStudent" CanUserAddRows="False"  AutoGenerateColumns="False" CanUserSortColumns="False" Height="450" Margin="0,0,0,0">
                        <DataGrid.Columns>
                            <DataGridTemplateColumn Width=".1*" >
                                <DataGridTemplateColumn.HeaderTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="姓名" />
                                    </DataTemplate>
                                </DataGridTemplateColumn.HeaderTemplate>
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBox Text="{Binding Name,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"></TextBox>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>
                            <DataGridTemplateColumn Width=".1*" >
                                <DataGridTemplateColumn.HeaderTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="班级" />
                                    </DataTemplate>
                                </DataGridTemplateColumn.HeaderTemplate>
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <ComboBox DisplayMemberPath = "GradeName" SelectedValuePath = "GradeID" SelectedValue="{Binding Path=Grade,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
                                                  ItemsSource="{Binding Path=GradeItems}"></ComboBox>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>
                        </DataGrid.Columns>
                    </DataGrid>
                    <Button Name="btnAdd" Content="新增" Width="90" Height="25" Margin="80,5,0,0" Click="BtnAdd_Click"></Button>
                    <Button Name="btnDelete" Content="删除" Width="90" Height="25" Margin="280,-25,0,0" Click="BtnDelete_Click"></Button>
                    <Button Name="btnConfirm" Content="确认" Width="90" Height="25" Margin="480,-25,0,0" Click="BtnConfirm_Click"></Button>
                </StackPanel>
            </TabItem>
        </TabControl>
    </Grid>
</Window>

 

//后台代码

 /// <summary>
    /// DataGrid.xaml 的交互逻辑
    /// </summary>
    public partial class DataGrid : Window
    {
        ObservableCollection<StudentModel> studentItems = new ObservableCollection<StudentModel>();
        public DataGrid()
        {
            InitializeComponent();
            AddRow();
            dgStudent.ItemsSource = studentItems;
        }

        private void AddRow()
        {
            StudentModel studentModel = new StudentModel()
            {
                Name = "",
                Grade = 0,
                GradeItems = new List<GradeItemModel>(),
            };
            studentModel.GradeItems.Add(new GradeItemModel() { GradeID=1,GradeName="1班"});
            studentModel.GradeItems.Add(new GradeItemModel() { GradeID = 2, GradeName = "2班" });
            studentModel.GradeItems.Add(new GradeItemModel() { GradeID = 3, GradeName = "3班" });
            studentItems.Add(studentModel);
        }

        private void BtnAdd_Click(object sender, RoutedEventArgs e)
        {
            AddRow();
        }

        private void BtnDelete_Click(object sender, RoutedEventArgs e)
        {
            if (dgStudent.SelectedItems != null && dgStudent.SelectedItems.Count > 0)
            {
                for (int i = dgStudent.SelectedItems.Count - 1; i >= 0; i--)
                {
                    studentItems.Remove(dgStudent.SelectedItems[i] as StudentModel);
                }
            }
        }

        private void BtnConfirm_Click(object sender, RoutedEventArgs e)
        {
            foreach (var item in studentItems)
            {
                MessageBox.Show("姓名:"+item.Name+",班级:"+item.Grade);
            }
        }
    }

    /// <summary>
    /// 学生实体
    /// </summary>
    public class StudentModel
    {
        public string Name { get; set; }

        public int Grade { get; set; }
        public List<GradeItemModel> GradeItems { get; set; }
    }

    /// <summary>
    /// 班级下拉框实体
    /// </summary>
    public class GradeItemModel
    {
        public int GradeID { get; set; }
        public string GradeName { get; set; }
    }

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值