如何在数据网格视图中进行高效搜索

本文关键字:高效 搜索 视图 网格 数据 数据网 | 更新日期: 2023-09-27 18:30:39

我在 Windows 窗体中使用数据网格视图 application.in 每次需要搜索数据时都会查询我的应用程序。

我为文本框键编写了搜索查询 event.my 运行应用程序时应用程序的速度稍慢。我的表中有大约 2000 行数据。如何使搜索更快并减少数据库负载。是否有任何选项可以在没有数据库交互的情况下在数据网格中搜索数据

我的代码如下

private void txtsearch_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Down)
        {
            datagridproduct.Focus();
        }
        string constring = @"Data Source=PC1'WINMANERP;Initial Catalog=Easylife;Integrated Security=True";
        //if (e.KeyCode == Keys.Enter)
        //{

        using (SqlConnection con = new SqlConnection(constring))
        {
            using (SqlCommand cmd = new SqlCommand("SELECT * FROM Item_Details where Item_Code LIKE '%' + @NM + '%' OR Item_Name LIKE '%' + @NM + '%'  OR Supplier_Name LIKE '%'+@NM+'%' OR Location LIKE '%' + @NM + '%'", con))
            {
                cmd.Parameters.AddWithValue("@NM", txtsearch.Text);
                cmd.CommandType = CommandType.Text;
                using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
                {
                    using (DataTable dt = new DataTable())
                    {
                        sda.Fill(dt);
                        datagridproduct.DataSource = dt;
                    }
                }
            }

        }


    }

如何在数据网格视图中进行高效搜索

在 DataGridView 中加载所有项后,可以使用数据网格单元格而不是数据库进行搜索,并对与搜索条件不匹配的行设置可见属性隐藏。

private void Search(string item)
    {
        TotalRecords = 0;
        List<DataGridViewRow> rows = new List<DataGridViewRow>();
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (row.Cells[1].Value != null)
            {
                //search on 1st row of datagridview
                if (row.Cells[1].Value.ToString() == item)
                {
                    row.Visible = true;
                    TotalRecords += 1;
                }
                else
                {
                    row.Visible = false;
                }
            }
        }
        dataGridView1.Refresh();
        labelTotalRecords.Text = "Total records = " + TotalRecords.ToString();
    }

在全局和用户数据表选择方法中声明数据表(DataRow[] rows=dt.选择("columnName="+urvalue));并根据行进行迭代,或者您可以使用"数据表 dt1=行。CopyToDataTable();"数据网格产品。数据源 = dt1;

如果你发现答案是有用的,在答案中放一个喜欢