2015-10-18 74 views
4

是的,我有一个事件驱动的Windows窗体项目在Visual Studio C#中。这是我从头开始写的电话日记。它实际上工作正常,但我只是想为用户添加另一个功能。如何做一个简单的dataGridView搜索/过滤器?

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

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

我有它在哪里用户可以升序/降序排列(这是数据网格的内置功能),但我想有特定的文本搜索。我不想做一个MySqlConnection和所有这些,我只是想能够进入搜索按钮并对其进行编程(单击)以仅搜索searchTextBox等于任何单元格中的值的位置我的dataGridView1,并只显示这些结果。

不知道为什么它很难找到,是否有可能?我认为这很简单,但我一直无法知道如何去做。以下是截至目前我的应用程序的图片。另外,如果您碰巧想知道如何让用户更好,那将会很好。 (:

Address book/telephone diary

+0

也许你可以将数据保存到一个DataTable – artsylar

+0

你有什么问题有,*专门*“我可以吗?如果你想“通过Google进行编程”,慢慢地仔细地学习如何做你需要做的事情来使它工作是一个更好的(也是更有生产力的)正如@gnat如此雄辩地指出,你可能会在错误的地方发布你的问题,但Stack Overflow会希望看到你的代码。这里没有什么可以解决的。 –

回答

4

刚刚尝试这一点,看看,

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

为什么人们会对此投票?我遵循你的代码,它正在做我想要的。但是你想添加ToUpper() - 因此它看起来像row.Cells [i] .Value.ToString()。ToUpper()和字符串searchValue = searchTextBox.Text.ToUpper()。只是为了使其不区分大小写。再次感谢我认为这是沿着这些路线的东西,但我无法弄清楚。 –