我有一个看起来像这样的DataGridView:
DGV
| Col 1 | Col 2 | Col 3 |
我想知道在写入数据表时是否可以删除第一列,以便它看起来像这样:
DataTable
| Col 2 | Col 3 |
此外,是否可以消除包含特定值的行?因此,如果值在datagridview中,我想从我的数据表中删除它。 例如。
DGV
| Col 1 | Col 2 | Col 3 |
| Value | One | Two |
| Value | Three | Two |
| Value | Four | Two |
因此,如果DataGridView中的值为“Three”,则DataTable将为
DataTable
| Col 2 | Col 3 |
| One | Two |
| Four | Two |
任何帮助将不胜感激!我已经尝试逐行解析,但我想知道是否有更有效的方法来实现这一点。
答案 0 :(得分:0)
假设您有一个GridView,然后我们使用
将其复制到数据表System.Data.DataTable GridToDT = new System.Data.DataTable();
GridToDT = (System.Data.DataTable)MyGrid.DataSource;
相应的代码现在将您当前的gridview复制到GridToDt Datatable以从表中删除任何列,您需要做的是找出列的索引值
GridToDT .Columns.RemoveAt(1);
或使用列名
GridToDT .Columns.Remove("Col 1");
对于你的其他问题,你可以做这样的事情
for(int i = GridToDT .Rows.Count-1; i >= 0; i--)
{
DataRow dr = GridToDT .Rows[i];
if (dr["Col 2"] == "Three")
dr.Delete();
}
希望这会有所帮助。如果有帮助,请随时将其标记为答案
答案 1 :(得分:0)
简单地说,您可以这样做以满足您的上述条件:
var dtableDemo = new DataTable();
dtableDemo = this.dgvDemo.DataSource as DataTable; //// Getting the datatable of datagridview datasource
if (dtableDemo != null)
{
dtableDemo.Columns.RemoveAt(0); //// Removing the first column of derived table
dtableDemo.Rows.Cast<DataRow>().Where(
row => row.ItemArray.Contains("put_your_value_to_check")).ToList()
.ForEach(row => row.Delete()); //// Remove the row if it contains the given value
dtableDemo.AcceptChanges(); //// Finalize the delete
}