日期:2014-05-17  浏览次数:20447 次

dropdownList的无法选择多项的问题
A.aspx中
dropdownlist是查询数据库中的类别后,
C# code
protected void DDLCGBind()
    {
        //查询所有类别,绑定到dropdownlist控件中

        CategoryBLL categoryBLL = new CategoryBLL();
        IList<BPMCategory> listCategory = categoryBLL.GetAllCategory();
        ddlCategory.DataSource = listCategory;
        ddlCategory.DataValueField = "ID";
        ddlCategory.DataTextField = "Category";
        ddlCategory.DataBind();
    }


再新建了一个项
C# code
ListItem newListItem1 = new ListItem();
            newListItem1.Value = "0";
            newListItem1.Text = "所有类别";
            ddlCategory.Items.Insert(0, newListItem1);


从B.aspx页面返回到A.aspx页面的时候,回传了一个参数,也就是ID值
这时候希望dropdownlist能够选中相同ID值的项
测试的时候,发现ddlCategory.SelectedIndex总是等于0,也就是我新增的这项
网上查询了一下,有人也提出了类似问题,给出了一些方法,我尝试了一下:
无论用ddlCategory.ClearSelection();方法还是ddlCategory.SelectedIndex=-1;还是
C# code

            for (int i = 0; i < ddlCategory.Items.Count; i++)
            {
                if (ddlCategory.Items[i].Value == urlIDcg.ToString())
                {
                    ddlCategory.SelectedIndex = i;
                    break;
                }
            }


都无法改变选中项,然后报错,求各位指点一二,小弟不胜感激。

------解决方案--------------------
Request.Form取一下子。可能是回传的时Ispostback没有再往下面执行下去。但是页面上的值是存在的
------解决方案--------------------
ddlCategory.Items.FindByValue("传过来的ID").Selected=true;
------解决方案--------------------
是不是回发了

if(!IsPostBack)
{
DDLCGBind();
//再加一项....
}
------解决方案--------------------
ddlCategory.Items.Insert(0, newListItem1);这个后面
加上ddlCategory.ClearSelection();
然后加上ddlCategory.Items.FindByValue("传过来的ID").Selected=true;
------解决方案--------------------
ListBox 才能多选,dropdownList只能单选

<asp:ListBox ID="x" runat="server" SelectionMode="Multiple"></asp:ListBox>
------解决方案--------------------
判断一下如果传过来的id不为空

this.ddlCategory.SelectedValue = id.ToString();
------解决方案--------------------
ListItem newListItem1 = new ListItem();
newListItem1.Value = "0";
newListItem1.Text = "所有类别";
ddlCategory.Items.Insert(0, newListItem1);
 上面这些是在ddlCategory的OnDataBound事件里面加的么?




------解决方案--------------------
谁说的允许改变ddlCategory.SelectedIndex了?
是你没使用好吧?