应该是这样
DropDownList.DataBind()后
DropDownList.SelectIndex = -1;
foreach( ListItem item in DropDownList.Items )
{
  if( item.Text == "c" )
  {
    item.Selected = true;
     break;
  }
}

解决方案 »

  1.   

    DropDownList.DataBind()后
    DropDownList.SelectIndex = -1;
    DropDownList.items.findbytext("c").select();
      

  2.   

    不要用什么数据绑定。
    用循环,读到一个个值,
    如果值和标识相等,则设为selected
      

  3.   

    试一下:
    DropDownList.SelectedIndex = DropDownList.Items.IndexOf(DropDownList.Items.FindByValue("c"));
      

  4.   

    DropDownList.SelectedIndex = DropDownList.Items.IndexOf(DropDownList.Items.FindByValue("c"));
    这个好像不对
      

  5.   

    要看你将数据绑定到DropDownList时的方式,如果你绑定的是DropDownList.DataTextFiled则要改为DropDownList.SelectedIndex = DropDownList.Items.IndexOf(DropDownList.Items.FindByText("c"));
      

  6.   

    怎么变成数字了,如果值为C:
    1
    a
    b
    1
    d
      

  7.   

    代码:
    ......
    '绑定
    dropname.DataTextField = "name"
    dropname.DataBind()
    dtrname.Close()
    '从数据库中取出我选中的值
    ......
    Dim strname As string 
    ...
    strname="c"
    dropname.SelectedIndex = -1
    dropname.SelectedIndex = dropname.Items.IndexOf(dropname.Items.FindByText(strUser))
     
      

  8.   

    dropname.SelectedIndex = dropname.Items.IndexOf(dropname.Items.FindByText(strname))
      

  9.   

    Sub page_load
        IF ...
          BindData
        End If
         
    End sub
    Sub BindDataList Dim dtrname As SqlDataReader
    Dim dtrinfo As SqlDataReader
    Dim cmdSelect As SqlCommand
    Dim cmdSelect1 As SqlCommand
    '取客户信息
    cmdSelect = New SqlCommand( "Select advertiserid,name From ad_advertiser Order by advertiserid", conPubs )
    conPubs.Open()
    dtrname = cmdSelect.ExecuteReader()
    dropname.DataSource = dtrname
    dropname.DataValueField = "advertiserid"
    dropname.DataTextField = "name"

    dropname.DataBind() dtrname.Close()

    '取选中用户的信息
    Dim strUser,strimp As string
    Dim cmdUser As SqlCommand
    Dim dtrUser As SqlDataReader
    cmdUser = New SqlCommand("SELECT dbo.ad_advertiser.name, dbo.ad_rotator.impressions FROM dbo.ad_advertiser INNER JOIN dbo.ad_rotator ON  dbo.ad_advertiser.advertiserid = dbo.ad_rotator.advertiserid WHERE (dbo.ad_rotator.adid = '" & stradid &"')",conPubs)
    dtrUser = cmdUser.ExecuteReader
    while dtrUser.Read()
    strUser = dtrUser("name")
    strimp = dtrUser("impressions")
    End while
    dtrUser.Close() dropname.SelectedIndex = -1
    dropname.SelectedIndex = dropname.Items.IndexOf(dropname.Items.FindByText(strUser))
    End Sub
      

  10.   

    有个问题呢
    取选中用户的信息中查到的数据不止一条吗?
    为什么用while
    这样,生效的是最后一条呢其次,你取客户信息
    中得到的数据有几条
      

  11.   

    选中的客户信息只有一条,如果不用while的话,好像一定需要Read一下的,怎么修改?
      

  12.   

    while dtrUser.Read()
    strUser = dtrUser("name")
    strimp = dtrUser("impressions")
    End while->if dtrUser.Read() then
    strUser = dtrUser("name")
    strimp = dtrUser("impressions")
    Endif