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();不知道为什么还是不行。
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();
SQLStr2=Rb2.checked?"select * from Tbl2":"select * from Tbl1";
ds = CDataBase.GetDataFromDB(SqlStr2);
this.gridView1.DataSource = ds.Tables[0];
这种情况是不是Rb1和rb2都是打勾的。
if (Rb1.checked)
{
----
}
else if (Rb2.checked)
{
----
}
这个判断语句,如果做了if就不会做else if里面的处理了
所以你肯定是两个都打勾的时候,其实还是相当于rb1打勾。
{
this.gridView1.DataSource = ds.Tables[0];
this.gridView1.DataBind();
}
this.gridView1.DataBind();
如果是单选应该是加一个RadioButtonList的控件,不会是Rb1和Rb2两个控件的。if(rblTable.SelectedItem == "Tbl1")
{
...
}
else if(rblTable.SelectedItem == "Tbl2")
{
...
}
不过在VS2008里不是this.gridView1.DataBind();
而是this.gridView1.DataBanding("",ds,"")。
结贴给分