C# - 如果 DataGridView 包含搜索词,将这些行导出到新的 DataGridView
C# - If DataGridView contains searched word, export these lines to new DataGridView
我有一个 DataGridView。我想做这个;我将使用文本框。在 DataGridView 填充之后,我将用一个词填充我的文本框,如果我的 DataGridView 的任何行包含这个词,我将把这些行导出到一个新的 DataGridView。让我解释。我的 DataGridView 看起来像那样;
Column1 Column2 Column3
-------------------------------------------------------------------
albania algeria 800 55.32
antarctica argentina 950
brazil bulgaria 25 77
india indonesia 30000 78.53
argentina iran 18 0.01
moldova mongolia 25854 77.50
假设我有一个文本框。假设我在我的文本框中写了 Argentina。完成此操作后,我的新 DataGridView 看起来像这样;
Column1 Column2 Column3
------------------------------------------------------------------
antarctica argentina 950
argentina iran 18 0.01
注意:抱歉,我无法对此产生任何想法。
你可以这样做:
ConvertGridToTable(); // Add data in Datatabledt from gridview
Clipboard.Clear();
DataObject data = new DataObject(DataFormats.Serializable, Datatabledt);
Clipboard.SetDataObject(data);
现在 Datatabledt 在剪贴板中可用,您可以将其粘贴到第二个网格视图中,您可以这样做:
DataObject data = (DataObject)Clipboard.GetDataObject();
DataTable dt = (DataTable)data.GetData(DataFormats.Serializable);
foreach (DataRow dr in dt.Rows)
{
dtData.ImportRow(dr);
}
dtData.AcceptChanges();
grdProgramData.DataSource = dtData;
MessageBox.Show("Data Pasted.");
private void ConvertGridToTable()
{
if (Datatabledt.Rows.Count > 0)
{ }
Datatabledt = dtData.Clone();
foreach (DataGridViewRow gr in YOURGRIDVIEW.SelectedRows)
{
DataRow dc = Datatabledt.NewRow();
dc["KEY-FIELD"] = Int32.Parse(gr.Cells[0].Value.ToString());
.....
---you can set your conditions here on the basis of textbox value---
Datatabledt.Rows.Add(dc);
}
Datatabledt.AcceptChanges();
}
假设您确实需要两个 DataGridView:
private void button2_Click(object sender, System.EventArgs e)
{
dataGridView2.Rows.Clear();
var filterText = textBox1.Text;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (Convert.ToString(row.Cells[0].Value).Contains(filterText))
{
var filteredRow = (DataGridViewRow)row.Clone();
//Copy values from one DataGridViewRow to another
foreach (DataGridViewCell cell in row.Cells)
{
filteredRow.Cells[cell.ColumnIndex].Value = cell.Value;
}
dataGridView2.Rows.Add(filteredRow);
}
}
}
我有一个 DataGridView。我想做这个;我将使用文本框。在 DataGridView 填充之后,我将用一个词填充我的文本框,如果我的 DataGridView 的任何行包含这个词,我将把这些行导出到一个新的 DataGridView。让我解释。我的 DataGridView 看起来像那样;
Column1 Column2 Column3
-------------------------------------------------------------------
albania algeria 800 55.32
antarctica argentina 950
brazil bulgaria 25 77
india indonesia 30000 78.53
argentina iran 18 0.01
moldova mongolia 25854 77.50
假设我有一个文本框。假设我在我的文本框中写了 Argentina。完成此操作后,我的新 DataGridView 看起来像这样;
Column1 Column2 Column3
------------------------------------------------------------------
antarctica argentina 950
argentina iran 18 0.01
注意:抱歉,我无法对此产生任何想法。
你可以这样做:
ConvertGridToTable(); // Add data in Datatabledt from gridview
Clipboard.Clear();
DataObject data = new DataObject(DataFormats.Serializable, Datatabledt);
Clipboard.SetDataObject(data);
现在 Datatabledt 在剪贴板中可用,您可以将其粘贴到第二个网格视图中,您可以这样做:
DataObject data = (DataObject)Clipboard.GetDataObject();
DataTable dt = (DataTable)data.GetData(DataFormats.Serializable);
foreach (DataRow dr in dt.Rows)
{
dtData.ImportRow(dr);
}
dtData.AcceptChanges();
grdProgramData.DataSource = dtData;
MessageBox.Show("Data Pasted.");
private void ConvertGridToTable()
{
if (Datatabledt.Rows.Count > 0)
{ }
Datatabledt = dtData.Clone();
foreach (DataGridViewRow gr in YOURGRIDVIEW.SelectedRows)
{
DataRow dc = Datatabledt.NewRow();
dc["KEY-FIELD"] = Int32.Parse(gr.Cells[0].Value.ToString());
.....
---you can set your conditions here on the basis of textbox value---
Datatabledt.Rows.Add(dc);
}
Datatabledt.AcceptChanges();
}
假设您确实需要两个 DataGridView:
private void button2_Click(object sender, System.EventArgs e)
{
dataGridView2.Rows.Clear();
var filterText = textBox1.Text;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (Convert.ToString(row.Cells[0].Value).Contains(filterText))
{
var filteredRow = (DataGridViewRow)row.Clone();
//Copy values from one DataGridViewRow to another
foreach (DataGridViewCell cell in row.Cells)
{
filteredRow.Cells[cell.ColumnIndex].Value = cell.Value;
}
dataGridView2.Rows.Add(filteredRow);
}
}
}