网上有人说加一句dropDownList1.ClearSelection()清除选择项就可以解决,可是在我这里就无效,不知道怎么解决。
我通过一个函数设置DDL的选择项,还望高手指点,因要使用Ajax,所以我的DDL都是放在updatePanel中的:
private void SetDDLItem(DropDownList ddlSetting, string strValue, bool bValue)
{
for(int i=0;i<ddlSetting.Items.Count;i++)
{
if(bValue)
{
if (ddlSetting.Items[i].Value == strValue)
{
ddlSetting.ClearSelection();
ddlSetting.SelectedIndex = i;
return;
}
}
else
{
if(ddlSetting.Items[i].Text==strValue)
{
ddlSetting.ClearSelection();
ddlSetting.SelectedIndex = i;
return;
}
}
}
}
我通过一个函数设置DDL的选择项,还望高手指点,因要使用Ajax,所以我的DDL都是放在updatePanel中的:
private void SetDDLItem(DropDownList ddlSetting, string strValue, bool bValue)
{
for(int i=0;i<ddlSetting.Items.Count;i++)
{
if(bValue)
{
if (ddlSetting.Items[i].Value == strValue)
{
ddlSetting.ClearSelection();
ddlSetting.SelectedIndex = i;
return;
}
}
else
{
if(ddlSetting.Items[i].Text==strValue)
{
ddlSetting.ClearSelection();
ddlSetting.SelectedIndex = i;
return;
}
}
}
}
dropDownList1.Items.FindByText(xstyle).Selected = true;
if (bValue)
{
ddlSetting.Items.FindByValue(strValue).Selected = true;
}
else
{
ddlSetting.Items.FindByText(strValue).Selected = true;
}
sometimes when you are trying to set a item as the "selected" one in a dropdown List, it has already a selected one, and setting and other one as the selected will cause this error you are reporting, you should try this before setting the selectedindex or selecteditem property:ddlSeller.SelectedIndex = -1This will "unselect" any item on the dropdownList.Hope this helps.
之所以不用这两个函数,而用循环判断,是因为如果strValue不在列表中,函数会报错,而循环无非是不设置任何选项。
SelectedIndex=-1与ClearSelection()意义是一样的,所以结果也是一样。
用FindByValue和FindByText完全可以,你说的不在列表中会报错那是你的用法有问题,我把你的代码精简了一下,你运行试试看是否会报错:private void SetDDLItem(DropDownList ddlSetting, string strValue, bool bValue)
{
ddlSetting.SelectedIndex=-1;
ListItem li;
if(bValue)
li=ddlSetting.Items.FindbyValue(strValue);
else
li=ddlSetting.Items.FindByText(strValue);
if(li!=null)
li.Selected=true;
}=============================
www.webdiyer.com
<asp:ListItem Selected="True" Text="请选择" Value="0"></asp:ListItem>2、有人使用ClearSelection()解决3、有人使用.Trim()解决
dropCurrenceType.Items.FindByValue(spInfo.CurrencyType.ToString().Trim()).Selected = true;
dropCurrenceType.Items.FindByText(spInfo.CurrencyType.ToString().Trim()).Selected = true;
if (!Page.IsPostBack)
{
// 绑定的代码放在这里
}
里面,导致控件一直绑定原选项,而你修改的时候与原来不同,就出现两个选中项,所以出错
DDPType.ClearSelection();
成功解决!!!!!
嗯,我的问题也是这个原因,有三个dropdownlist,都一个“请选择”的项,items.insert的是插入的同一个,结果就出错了
真的可以解决耶~~~~ 谢谢!