例如有1个DataGridView数据是这样的
A     B     C     D
1     2     3     4
5     6     7     8想根据文本框的值隐藏相应的列
例如文本框是A时
A
1
5
文本框是A|B时
A     B          
1     2
5     6
就是你输入的就显示 没输入的全部隐藏
我写的一个不对
//targetType文本框的值
string[] targetTypeArray = targetType.Split('|');                for (int j = 0; j < targetTypeArray.Length; j++)
                {
                    for (int i = 0; i < dgvTargetUnit.Columns.Count; i++)
                    {
                      if (dgvTargetUnit.Columns[i].Name.ToString() != targetTypeArray[j].ToString())
                      {
                          dgvTargetUnit.Columns[i].Visible = false;
                      }
                    }
                }不知道那错了

解决方案 »

  1.   

    发现肯定有问题啊,比如你输入A|B时,第一次循环,你只显示了A那列,第二次循环就就只显示了B了,你就把A列给覆盖隐藏了.
      

  2.   

    在DataGridView的databind事件中处理!
      

  3.   

    string text = textBox1.Text.Trim();
                string[] txtarray = text.Split('|');
                foreach (DataGridViewColumn dgvc in dataGridView1.Columns)
                {
                    bool flag = false;
                    string header = dgvc.Name;
                    foreach (string str in txtarray)
                    {
                        if (str == header)
                        {
                            flag = true;
                            break;
                        }
                    }
                    dgvc.Visible = flag;
                }