通过按钮 c# 删除 gridview 记录
removing gridview records via button c#
我正在尝试通过使用带有功能的某个按钮从网格中删除特定的 gridview 记录,我似乎每次 select 要删除的记录时都会收到 "NullReferenceException was unhandled error" . (记录处于 "Edit" 状态。
当我添加一组新的 gridview 记录时,这些按钮工作正常,我可以根据需要添加和删除它们,当我编辑记录时,错误开始弹出。
删除按钮代码:
int nCurrentRow = -1;
nCurrentRow = Convert.ToInt16(grdWorkers.CurrentCell.RowIndex.ToString());
if (nCurrentRow != -1)
{
DataRow dr;
dr = dsDetail1.Tables["Workers2"].Rows[nCurrentRow];
dsDetail1.Tables["Workers2"].Rows.Remove(dr);
}
grdWorkers.DataSource = null;
grdWorkers.DataSource = dsDetail1.Tables["Workers2"];
grdWorkers.Columns[0].Visible = false;
我在这里可能是错的,但看起来您是从 DataGrid 或 DatagridView 获取索引(我不确定您使用的是哪个。我使用的是 DataGridView)。您的代码:
nCurrentRow = Convert.ToInt16(grdWorkers.CurrentCell.RowIndex.ToString());
这将 return DataGridView 中所选单元格的索引。然后在下面使用 DataTable 上的索引。
DataRow dr;
dr = dsDetail1.Tables["Workers2"].Rows[nCurrentRow];
dsDetail1.Tables["Workers2"].Rows.Remove(dr);
如果您的 DataGridView 有一个看起来确实有的数据源,那么这两个索引不一定相同。下面是我用来获取 DataGridView 中所选项目的 DataTable 索引的内容。
DataRowView drv = (DataRowView)dataGridView1.CurrentRow.DataBoundItem;
DataRow dr = drv.Row;
int indexToTable = dgvDataTable.Table.Rows.IndexOf(dr);
希望对您有所帮助。
我正在尝试通过使用带有功能的某个按钮从网格中删除特定的 gridview 记录,我似乎每次 select 要删除的记录时都会收到 "NullReferenceException was unhandled error" . (记录处于 "Edit" 状态。
当我添加一组新的 gridview 记录时,这些按钮工作正常,我可以根据需要添加和删除它们,当我编辑记录时,错误开始弹出。
删除按钮代码:
int nCurrentRow = -1;
nCurrentRow = Convert.ToInt16(grdWorkers.CurrentCell.RowIndex.ToString());
if (nCurrentRow != -1)
{
DataRow dr;
dr = dsDetail1.Tables["Workers2"].Rows[nCurrentRow];
dsDetail1.Tables["Workers2"].Rows.Remove(dr);
}
grdWorkers.DataSource = null;
grdWorkers.DataSource = dsDetail1.Tables["Workers2"];
grdWorkers.Columns[0].Visible = false;
我在这里可能是错的,但看起来您是从 DataGrid 或 DatagridView 获取索引(我不确定您使用的是哪个。我使用的是 DataGridView)。您的代码:
nCurrentRow = Convert.ToInt16(grdWorkers.CurrentCell.RowIndex.ToString());
这将 return DataGridView 中所选单元格的索引。然后在下面使用 DataTable 上的索引。
DataRow dr;
dr = dsDetail1.Tables["Workers2"].Rows[nCurrentRow];
dsDetail1.Tables["Workers2"].Rows.Remove(dr);
如果您的 DataGridView 有一个看起来确实有的数据源,那么这两个索引不一定相同。下面是我用来获取 DataGridView 中所选项目的 DataTable 索引的内容。
DataRowView drv = (DataRowView)dataGridView1.CurrentRow.DataBoundItem;
DataRow dr = drv.Row;
int indexToTable = dgvDataTable.Table.Rows.IndexOf(dr);
希望对您有所帮助。