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);
            }
        }
    }