//查询与输入条件匹配的信息    
protected void selectbtn_Click(object sender, EventArgs e)
        {
            string c="";
            if (chkpID.Checked)
            {
                 c ="pID="+txtpID.Text;              }
            else
            {
                c="pID like  '%'";
            }
            DataView dv = new DataView(personoperate.fillDataGrid());
            dv.RowFilter=c;
            DataGrid1.DataSource = dv;
            DataGrid1.DataBind();
        }
如果在文本框中输入任意字符如E
程序执行到DataView dv = new DataView(personoperate.fillDataGrid())出现未找到列 [E]
哪位知道什么原因?应该怎么改好啊

解决方案 »

  1.   

     
    刚说错了,是程序执行到dv.RowFilter=c; 出现未找到列 [E] 错误
      

  2.   

    pID是string型的,
    我也怀疑是标点的问题,可怎么改都不对不知道怎么回事 
      

  3.   

      c ="pID='"+txtpID.Text+"'"; 
      

  4.   

    或者:
      c = string.Format("pID='{0}'", txtpID.Text.Trim()); 
      

  5.   

    对了,谢谢了,
    有点困惑txtpID.Text本来就string 型的啊为什么还要 c ="pID='"+txtpID.Text+"'";这样才对啊
      

  6.   

    因为最终的SQL语句应该是 ... where pID='E'  而不应该是  ... where pID=E
      

  7.   

    因为最终的过滤条件应该是 pID='E' 而不应该是 pID=E
      

  8.   

    另外,在你这个例子中,              else 
                { 
                    c="pID like  '%'"; 
                } 这段应该可以省略,而效果是一样的。
      

  9.   

    谢谢呢,刚开始学C#感觉还挺晕的,不知怎么学好点
    另外
                  else 
                { 
                    c="pID like  '%'"; 
                } 
    去了效果不一样的,有这句会把所有数据绑定到数据dataGrid控件,没的话就没有数据绑定了