.net新手求教一低级问题如何选定dropdownlist的选项?
代码如下:
<asp:DropDownList ID="type" runat="server"  AutoPostBack="true" >
                        <asp:ListItem Value='1' >kab</asp:ListItem>
                        <asp:ListItem Value='0'>cab</asp:ListItem>
                    </asp:DropDownList>
已从数据库取出了值,如何令它选定?kab与cab在页面上已经写死

解决方案 »

  1.   

    不明白什么意思,你这里自己指定了Items,已从数据库取出了值是什么意思?你要选定什么
      

  2.   

    不好意思,我说得不清楚.是这样的,这个是属A表的一个属性,我是想在修改记录时,把它选定(即匹配kab或者cab的值)并显示出来。
    DropDownList.SelectedValue我已经使用了取值,即DropDownList.SelectedValue=bc_read["bc_Type"].ToString();
    但是页面上没有反应
      

  3.   

    上面是手写的还是程序中就这样?你这个DropDownList的ID是type,这样试下type.SelectedValue=bc_read["bc_Type"].ToString();如果还是不对,那么断点看下bc_read["bc_Type"].ToString();的值
      

  4.   

    不是很清楚楼主的意思,试试这:
    foreach (ListItem item in dropDownList.Items)
    {
        if (item.Value == "你的值")
        {
            item.Selected = true;
            break;
        }
    }
      

  5.   

    试过了,type.SelectedValue的值的确不对,但使用type.SelectedItem.Value = bc_read["bc_Type"].ToString()时的值又对了,结果我试了一下,直接使用type.SelectedValue = type.SelectedItem.Value ,值是对了,但页面还是没反应,是不是页面或者c#文件里面还要做些什么才可以呢?
      

  6.   

    dropdownlist.selectvalues = "1"
      

  7.   

    不太明白jgood的意思,简化来说吧,我读取一个男生的记录,性别为"男",
    页面上已经写好了选项
    <asp:DropDownList ID="type" runat="server"  AutoPostBack="true" >
                            <asp:ListItem Value='1' >女</asp:ListItem>
                            <asp:ListItem Value='0'>男</asp:ListItem>
                        </asp:DropDownList>
    c#里面要怎么写才可以显示性别"女"
      

  8.   

    呵呵,被楼主说糊涂了你这样的代码
    type.SelectedValue=bc_read["bc_Type"].ToString();
    是写在什么事件里的
      

  9.   

    我写在bc_read.Read()里面,呵呵,不好意思,表达有点问题.但我看书里,好象这个dropdownlist的选定要另外写,是吗?但是这样岂不要多读一次数据库?
      

  10.   

    也不是不可以,只是你要保证bc_read["bc_Type"].ToString();得到的值正确另外就是你的DropDownList是独立的,而不是嵌套在其它控件中的吗
      

  11.   

    是啊,bc_read["bc_Type"].ToString()这个值是正确的,dropdownlist是独立的.
    但是为什么bc_read["bc_Type"].ToString()的值是对的,一但 type.SelectedValue = bc_read["bc_Type"].ToString()就不对了呢?
      

  12.   

    你把代码放到if(!Page.IsPostback)
    {
    //
    }就可以了
      

  13.   

    LS那位, 
    楼主对DropDownList控件的数据来源是前台绑定的,定死的,不是从数据库里读出来的。
      

  14.   

    我重新建了一个网站验证,发现type.SelectedValue 赋予一个常量,绝对没问题,一旦赋予一个变量,它的值莫名奇妙就变了,比方说bc_read["bc_Type"].ToString()是A,一旦赋给type.SelectedValue就是B,但直接type.SelectedValue = "A"就没事,无语了.
      

  15.   

    把你取bc_read["bc_Type"]这部分代码贴一下看看,估计是这里的问题
      

  16.   

    id = Request.QueryString["id"];
                bc_sql = "select * from bc where bc_Id=" + id;
                //原query代码
                String connString = ConfigurationSettings.AppSettings["hdkeiv"];
                OleDbConnection bc_dbconn = new OleDbConnection(connString);
                OleDbCommand bc_comm = new OleDbCommand(bc_sql, bc_dbconn);
                bc_comm.Parameters.Add("@bc_Id",OleDbType.Integer);
                bc_comm.Parameters["@bc_Id"].Value = Request.QueryString[0];
                bc_dbconn.Open();
                OleDbDataReader bc_read = bc_comm.ExecuteReader();
     
                if (bc_read.Read())
                {
                    name.Text = bc_read["bc_Name"].ToString();
                    type.SelectedValue = bc_read["bc_Type"].ToString();                bc_dbconn.Close();
                }
                else
                {
                    Response.Write("该品不存在,请重新查找!");
                    Response.End();
                }//截至到此
      

  17.   

    代码没看出什么问题,你只用代码来控件DropDownList 显示内容是吧,那么把<asp:DropDownList ID="type" runat="server"  AutoPostBack="true" >里的 AutoPostBack="true"去掉,另外没有写type_SelectedIndexChanged事件吧不行就先
    if(bc_read["bc_Name"].ToString() == ...)判断一下,然后根据结果用
    type.SelectedIndex来改变显示内容看看
      

  18.   

    <asp:DropDownList ID="type" runat="server"  AutoPostBack="true" >
                            <asp:ListItem Value='1' >女</asp:ListItem>
                            <asp:ListItem Value='0'>男</asp:ListItem>
                        </asp:DropDownList>
    type.SelectedValue =convent.tostring(变量);
    变量是可以的,你确定你取的是一个数据吗~!
      

  19.   

    回:ixcnn
    可以讲得详细点吗?selectedIndex具体怎么用?回:qiuming0306
    是的,的确取到数据,但一旦赋给selectedValue,值就起了变化,变成设定的第一项选项
      

  20.   

    事实上按之前的写法不应该有问题的你这里就两个值是吧,这样试下if(bc_read["bc_Type"].ToString() == "0")
    {
        type.SelectedIndex = 1;
    }
    else
    {
        type.SelectedIndex = 0;
    }
      

  21.   

    我理解你的意思是:
    页面上DropdownList绑定男、女两个Item,从数据库取值,如果取出来是男,DropDownList就显示男是选中的,反之就是女是选中的。
    如果是这样的话,可以用下面的例子:
    CS代码:
        protected void Page_Load(object sender, EventArgs e)
        {        //SetDropDownListSelectItem("男");
            SetDropDownListSelectItem("女");
        }    /// <summary>
        /// 参数text就是你数据中取出来的男或者女,如果你要与DropdownList的Value进行匹配,
        /// 参数可传入value,ListItem item = DropDownList1.Items.FindByText(text);可换成
        /// FindByValue(value);
        /// </summary>
        private void SetDropDownListSelectItem(string text)
        {
            //查询当前应该是那一条Item被选中
            ListItem item = DropDownList1.Items.FindByText(text);
            if (item != null)
                item.Selected = true;   //设为选中
        }HTML代码:
    <form id="form1" runat="server">
        <div>
            <asp:DropDownList ID="DropDownList1" runat="server">
                <asp:ListItem Value="0">男</asp:ListItem>
                <asp:ListItem Value="1">女</asp:ListItem>
            </asp:DropDownList></div>
        </form>
      

  22.   

    顶楼上的,如果是男,则type.items[0].selected=true
    如果是女,着type.items[1].selected=true
      

  23.   

    SQL里面的格式是什么?? 看需不需要 tostring().trim()
      

  24.   

    解决了,感谢lxcnn(过客) 和llxchen(生活的理想就是理想的生活)的详细解答,我发现问题是出在取值的方面,这个还是liubao512384178() 给我的提醒,非常感谢!结贴,发分~