C# - 如果DataGridView包含搜索词,请将这些行导出到新的DataGridView

问题描述 投票:0回答:2

我有一个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

想象一下,我有一个文本框。假设我在文本框中写了阿根廷语。在这个操作之后,我的新DataGridView看起来像那样;

             Column1                Column2                Column3
     ------------------------------------------------------------------
      antarctica argentina            950                         
      argentina iran                  18                     0.01

注意:抱歉,我无法提出任何想法。

c# datagridview textbox datarow
2个回答
1
投票

假设您确实需要两个DataGridViews:

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

0
投票

你可以这样做:

ConvertGridToTable();  // Add data in Datatabledt from gridview
Clipboard.Clear();
DataObject data = new DataObject(DataFormats.Serializable, Datatabledt);
Clipboard.SetDataObject(data);

现在,在剪贴板中可以使用Datatabledt,您可以将其粘贴到第二个gridview中,您可以使用它来执行此操作:

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.