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了?
是你没使用好吧?