如何做一个简单的dataGridView搜索/过滤?

时间:2015-10-18 23:45:05

标签: c# visual-studio oop datatable

是的,我有一个用Visual Studio C#制作的事件驱动的Windows窗体项目。这是我从头开始制作的电话日记。它实际上工作正常,但我只是想为用户添加另一个功能。

用户输入联系人,想要将详细信息添加到datagridview。他们可以添加,在程序运行时根据需要编辑,可以从excel文件中添加(导入)更多人,然后可以导出它到一个新的Excel文件。因此,没有任何东西保存到程序中,他们想要做的一切都必须在程序运行期间发生,并根据需要导出到新的excel文件。

所以一切正常但我想让用户搜索程序中的当前数据网格(dataGridView1)(应用内),我无法弄清楚如何。

我知道用户可以对列升序/降序进行排序(这是数据网格的内置功能),但我想进行特定的文本搜索。我不想制作一个MySqlConnection以及所有这些,我只是想能够,比如说,进入搜索按钮并对其进行编程(点击)只搜索searchTextBox等于任何值的地方我的dataGridView1的单元格,只显示那些结果。

不确定为何如此难以找到,是否可能?我认为这很简单,但我还没有找到如何做到这一点。下面是我现在申请的图片。此外,如果你碰巧有任何想法,如何使用户更好,这将是很好的。 (:

Address book / telephone diary

1 个答案:

答案 0 :(得分:6)

试试看,看看,

    private void searchbutton_Click(object sender, EventArgs e)
    {
    string searchValue = searchtextBox.Text;
    dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    try
    {
        bool valueResult = false;
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            for (int i = 0; i < row.Cells.Count; i++)
            {
                if (row.Cells[i].Value != null && row.Cells[i].Value.ToString().Equals(searchValue))
                {
                    int rowIndex = row.Index;
                    dataGridView1.Rows[rowIndex].Selected = true;
                    valueResult = true;
                    break;
                }
            }

        }
        if (!valueResult)
        {
            MessageBox.Show("Unable to find " + searchtextBox.Text, "Not Found");
            return;
        }
    }
    catch (Exception exc)
    {
        MessageBox.Show(exc.Message);
    }
}