WPF中对datagrid删除选中的某一行。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF中对datagrid删除选中的某一行。相关的知识,希望对你有一定的参考价值。

前台:
<DataGrid Name="dgv" RowHeaderWidth="0" HorizontalAlignment="Left" Margin="214,206,0,0" VerticalAlignment="Top" Height="514" Width="856" AutoGenerateColumns="False" CanUserAddRows="False"> <DataGrid.Columns> <DataGridTemplateColumn Header="选择"> <DataGridTemplateColumn.CellEditingTemplate> <DataTemplate /> </DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox Tag="Binding Path= ID" Name="select"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn>
<DataGridTextColumn Binding="Binding ID" Header="序号" Width="40"/> <DataGridTextColumn Binding="Binding Name" Header="姓名" Width="40"/> <DataGridTextColumn Binding="Binding Sex" Header="性别" Width="40" /> <DataGridTextColumn Binding="Binding Age" Header="年龄" Width="40"/> <DataGridTextColumn Binding="Binding Jycd" Header="教育程度" Width="80"/> <DataGridTextColumn Binding="Binding Hy" Header="婚否" Width="40"/> <DataGridTextColumn Binding="Binding Zy" Header="职业" Width="80"/> <DataGridTextColumn Binding="Binding XM" Header="训练项目" Width="100"/> <DataGridTextColumn Binding="Binding HJ" Header="训练环境" Width=" 100"/> <DataGridTextColumn Binding="Binding SJ" Header="训练时间" Width=" 100"/> <DataGridTextColumn Binding="Binding Delta" Header="Delta" Width=" 100"/> </DataGrid.Columns> </DataGrid>
</StackPanel> <StackPanel> <Button Content="删除" Name="Del" Click="Del_Click"></Button> </StackPanel>
后台目前只绑定了数据库:我的Datagrid是用到了联合查询,分别两张表T_grxx、thinkgeardata。

我现在想实现勾选chexkbox ,点击一个删除按钮就能删除该行。 我是新手,尽量多写点代码给我参考,我的qq:269440542,在线等

方法如下:

DataTable嵌入DataGrid,DataTable可以通过Rows和Columns删除行和列
代码:

private void AddData_Click(object sender, RoutedEventArgs e)

DataRow dr = dt.NewRow();
for (int columIndex = 0; columIndex < dt.Columns.Count; columIndex++)

if (columIndex == 0)
dr[columIndex] = "第" + dt.Rows.Count.ToString() + "组";
else
dr[columIndex] = "";
//dr[columIndex] = dt.Rows.Count.ToString() + " - " + columIndex.ToString();

dt.Rows.Add(dr);


int newColumnIndex = 5;
//增加一列
private void AddColumn_Click(object sender, RoutedEventArgs e)

dt.Columns.Add(new DataColumn("" + newColumnIndex++));
for (int i = 0; i < dt.Rows.Count; i++)

if (i == 0)
dt.Rows[i][dt.Columns.Count - 1] = "A" + (newColumnIndex - 1).ToString();
else
dt.Rows[i][dt.Columns.Count - 1] = "";
//dt.Rows[i][dt.Columns.Count - 1] = i.ToString() + " - " + (newColumnIndex - 1).ToString();

dataGrid.ItemsSource = null;
dataGrid.ItemsSource = dt.DefaultView;


//删除一行
private void DeleteData_Click(object sender, RoutedEventArgs e)

if (dt.Rows.Count > 2)

if (dataGrid.SelectedIndex != -1 && dataGrid.SelectedIndex != 0 && dataGrid.SelectedIndex != dt.Rows.Count)

dt.Rows.RemoveAt(dataGrid.SelectedIndex);

else

dt.Rows.RemoveAt(dt.Rows.Count - 1);


参考技术A

简单说一下我的想法:

    获取当前选中的行,选中行的序号那个列应该是唯一的.

    在数据库中删除选中行的数据,

    在刷新datagrid即可.

追问

这些思路我也知道,但具体怎么写?能具体点吗?

WPF DataGrid 如何对选择的多行进行删除

参考技术A 。。 在WPF中也是一样的。。下面是一个解决方法。。。前提条件: 窗体中有一个名为datagrid1的DataGrid, 点击一个button, 进行删除多行数据的操作下面是主要代码:本回答被提问者采纳

以上是关于WPF中对datagrid删除选中的某一行。的主要内容,如果未能解决你的问题,请参考以下文章

wpf datagrid绑定了数据 如果选中多行中怎么获取选中行的某列的值

WPF中添加一个Datagrid使用dataset双向绑定,在第一列中添加一列checkbox用来选择本行,

WPF DataGrid 获取选中 一行 或者 多行

wpf datagrid中如何获取选中行中模板如textbox,combobox的内容

怎么获取datagrid中数据

C#的wpf工程中由于datagrid中的数据一直在更新所以每次选中某一行时,数据一更新选中就会被取消掉