我在我的Windows窗体应用程序中使用数据网格视图。在我的应用程序中,我每次查询时都需要搜索data.i写入搜索查询文本框按键事件。我的应用程序在运行application.i时变慢一点我的表中有大约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;
}
}
}
}
}
答案 0 :(得分:0)
在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();
}
答案 1 :(得分:0)
在Global和user datatable select方法中声明DataTable(DataRow [] rows = dt.Select(“columnName =”+ urvalue));并根据行进行迭代,或者您可以使用“DataTable dt1 = rows.CopyToDataTable();”datagridproduct.DataSource = dt1;
如果您发现答案很有用,请回答