繁体   English   中英

如何清除数据网格视图中除列标题外的行和列

[英]How to clear data grid view rows and columns except the column headers

我有一个基于数量的信息数据网格视图,该视图具有3列文本类型和1列类型复选框,现在,每当用户使用时,此数据网格视图就会用库存表中的同一项目填充不同的项目数量和不同的到期日期输入项目名称。
问题是,每当使用名为“ 添加项目 ”的按钮选择该项目并将其插入到另一个数据网格视图中时,都会清除用于数据输入的工具,同时也应清除基于数量的信息的数据网格视图,我尝试了此代码,但是将其擦除完全是数据网格视图,我只希望只清除从数据库检索到的数据,并且仍然显示数据网格视图的标题。
此代码用于“ 添加项目”按钮

 DataRow r = dt.NewRow();
 r[0] = sBillItemBartxt.Text;
 r[1] = sBillItemNametxt.Text;
 r[2] = itemQuanttxt.Text;
 r[3] = itemPricetxt.Text;
 r[4] = itemTtlPricetxt.Text;
 r[5] = expire;
 dt.Rows.Add(r);
 sBilldgv.DataSource = dt;
 clearItemsText();
 sBillTtlCostlbl.Text = (from DataGridViewRow row in sBilldgv.Rows where row.Cells[4].FormattedValue.ToString() != string.Empty select Convert.ToDouble(row.Cells[4].FormattedValue)).Sum().ToString();
 sBillItemBartxt.ReadOnly = sBillItemNametxt.ReadOnly = false;
 dtRes.Clear();
 exDatedgv.DataSource = null;
 exDatedgv.Rows.Clear();
 exDatedgv.Columns.Clear();

几乎可以像添加它们一样清除它们(无需删除列)。

MyDataGridView.Rows.Clear();

这将定位行而不是列。

我认为您的标题已被清除,原因是

exDatedgv.Columns.Clear();

同样,如果只希望删除重复的行,则可能要考虑使用循环检查重复的行,并仅在添加新行之前删除该行。 我还告诉您将BindingList与datagridview一起使用,但是由于您的一列是复选框,因此我不确定是否可以使用BindingList来实现此目的。

从您的代码尚不清楚您要做什么。 由于您正在用作DataTable所以我不确定为什么要使用DataTable dtRes.Clear(); 不起作用,因为这将清除所有数据并保留列标题。 设置exDatedgv.DataSource = null; 这将清除行和列,因此接下来的两行是多余的。 要按照您的描述Clear DataGridView ,只需Clear与该DataGridView关联的DataTable 这将使标题保持完整,但是在“清除”之后,表中将没有数据,因此,如果您尝试重新绑定刚刚清除的表,显然它将为空。 如果您不想从表中删除数据,那么您将必须自己设置标题,为此目的创建一个空表或者只是(不是最佳解决方案)从主数据库创建副本。 在下面,我制作了一个数据绑定的DataGridView ,然后如上所述按按钮2清除了它,然后将DataGridView (重新绑定)到原始表的副本。 这将清除DataGridView ,并在按下按钮2时保留标题,然后在按下按钮3时将DataGridView为原始数据。希望这会有所帮助。

private void button2_Click(object sender, EventArgs e) {
  //dataGridView1.Columns.Clear(); <-- clears headers
  //dataGridView1.Rows.Clear(); <-- will crash if data is bound
  //dataGridView1.DataSource = null; <-- removes headers
  dt.Clear();  // <-- Clears data and leaves headers, removes data from table!
}

private void button3_Click(object sender, EventArgs e) {
  dt = masterTable.Copy();  // <-- Get a new table if it was cleared
  dataGridView1.DataSource = dt;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM