if (Rb1.checked)
{
   SQLStr1="select * from Tbl1";   DataSet ds = new DataSet();
   ds = CDataBase.GetDataFromDB(SqlStr1);   if (ds != null)
   {
      this.gridView1.DataSource = ds.Tables[0];
   }
}
else if (Rb2.checked)
{
   SQLStr2="select * from Tbl2";
   DataSet ds = new DataSet();
   ds = CDataBase.GetDataFromDB(SqlStr2);   if (ds != null)
   {
      this.gridView1.DataSource = ds.Tables[0];
   }}//这是CDataBase.GetDataFromDB
public static DataSet GetDataFromDB(string sqlStr)
{
  conn.Open();
  SqlDataAdapter myAdapter = new SqlDataAdapter(sqlStr, conn);
  DataSet myDataSet = new DataSet();
  myDataSet.Tables.Clear();
  myAdapter.Fill(myDataSet);
  conn.Close();
  if (myDataSet.Tables[0].Rows.Count != 0)
  {
    return myDataSet;
  }
  else
  {
    return null;
  }
}先选择Rb1时,SQLStr1运行,GridView是SQLStr1查询出来的数据;
先选择Rb2时,SQLStr2运行,GridView是SQLStr2查询出来的数据;
但是选择Rb1运行后,再选择Rb2运行时,GridView中还是SQLStr1查询出来的数据, 看不到SQLStr2查询出来的数据。
我在GetDataFromDB中也使用了DataSet.Tables.clear();不知道为什么还是不行。

解决方案 »

  1.   

    楼主很显然无论你怎么选择总是绑定了一个。比如第一次绑定sqlstr1,然后你执行R2,这时候按照楼主的代码那么又重新给Gridview绑定了sqlstr2。因此无论你怎么选择都是绑定一个!
      

  2.   


     DataSet ds = new DataSet();
    if (Rb1.checked)
    {
       SQLStr1="select * from Tbl1";  
       ds = CDataBase.GetDataFromDB(SqlStr1);  
    }
    if (Rb2.checked)
    {
       SQLStr2="select * from Tbl2";
      
       ds = CDataBase.GetDataFromDB(SqlStr2);
     }
     
          this.gridView1.DataSource = ds==null?null:ds.Tables[0];
        this.gridView1.DataBind();
      

  3.   

    DataSet ds = new DataSet();
    SQLStr2=Rb2.checked?"select * from Tbl2":"select * from Tbl1";
    ds = CDataBase.GetDataFromDB(SqlStr2);
    this.gridView1.DataSource = ds.Tables[0];
      

  4.   

    但是选择Rb1运行后,再选择Rb2运行时,GridView中还是SQLStr1查询出来的数据, 看不到SQLStr2查询出来的数据
    这种情况是不是Rb1和rb2都是打勾的。
    if (Rb1.checked)
    {
    ----
    }
    else if (Rb2.checked)
    {
    ----
    }
    这个判断语句,如果做了if就不会做else if里面的处理了
    所以你肯定是两个都打勾的时候,其实还是相当于rb1打勾。
      

  5.   

    如果像你这样写的话,你应该加一句Bind()  if (ds != null)
       {
          this.gridView1.DataSource = ds.Tables[0];
    this.gridView1.DataBind();
       }
      

  6.   

    改变数据源以后,要让控件重新绑定的!
    this.gridView1.DataBind();
      

  7.   

    楼主是要单选还是多选?
    如果是单选应该是加一个RadioButtonList的控件,不会是Rb1和Rb2两个控件的。if(rblTable.SelectedItem == "Tbl1")
    {
        ...
    }
    else if(rblTable.SelectedItem == "Tbl2")
    {
        ...
    }
      

  8.   

    报错,System.Windows.Forms.DataGridView不包含"DataBind"的定义
      

  9.   

    单选,我把RadioButton放在groupBox里面了我用的是VS 2008
      

  10.   

    恩,按照2楼的,成功运行!
    不过在VS2008里不是this.gridView1.DataBind();
    而是this.gridView1.DataBanding("",ds,"")。
    结贴给分