我想让页面加载时让DropDownList获取数据库中设定的值,比如男的,DropDownList的选择列表值为0,得到男,反之为女,可是我写的程序在 reader.GetBoolean(3)这里好象没有很好的工作!?  OleDbConnection conn = null;
OleDbDataReader reader = null;
conn = new OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0; " + 
"Data Source=" + Server.MapPath("Pets/db.mdb"));conn.Open();//以OLEDB打开数据库
OleDbCommand cmd = new OleDbCommand("Select * FROM PetTable order by ID DESC", conn);
reader = cmd.ExecuteReader();
datagrid.DataSource = reader;
datagrid.DataBind(); 
reader.Read();
foreach(DataGridItem dgi in datagrid.Items)
{
 if( reader.GetBoolean(3))  //这里??有问题?
  ((DropDownList)dgi.FindControl("UnBind")).SelectedIndex=0;
 else
  ((DropDownList)dgi.FindControl("UnBind")).SelectedIndex=1;
}

请解决!我初学!

解决方案 »

  1.   

    reader.GetBoolean(3)这个是不是转换有问题啊
    用Convert.ToBool(reader[3].ToString())试一试
      

  2.   

    我改成这个了:if(System.Convert.ToBoolean(reader["sex"].ToString()) )或者:我改成这个了:if(System.Convert.ToBoolean(reader[1].ToString()) )但是怎么提示:不存在此行/列的数据。
    还有 reader.read();做了些什么?不要他好象还是那样反映的!
      

  3.   

    改为如下看看.取出来的值应当是0/1,而不是true/false
    foreach(DataGridItem dgi in datagrid.Items)
    {
     if( reader.GetString(3) == "0") 
      ((DropDownList)dgi.FindControl("UnBind")).SelectedIndex=0;
     else
      ((DropDownList)dgi.FindControl("UnBind")).SelectedIndex=1;
    }
      

  4.   

    看你的reader["sex"].ToString()到底取道什么了 
    if("0".equals(object))   这样写不成吗?
      

  5.   

    不知道呀!怎么看?我刚又发了篇帖子,就是问这个取到是什么值?我sex字段在数据库中是(真/假)类型,