2014-10-20 31 views
0

我的Web表单页面上有一个用户定义的类型下拉列表(DDL),它从System.Web.UI.WebControls.DropDownList继承。我在页面的代码文件(.aspx.cs)和AppCode中填充DDL,而不会出现错误。“不能在下拉列表中选择多个项目”AppCode中的错误

public static void FillDropDownList(ListControl drp) 
{ 
    drp.Items.Clear(); 
    drp.Items.Add(new ListItem("Please select", "")); 
    drp.Items.Add(new ListItem("False", false.ToString())); 
    drp.Items.Add(new ListItem("True", true.ToString())); 
} 

然后我初始化我DDL:

drp.SelectedValue = "False"; 

初始化工作时填写方法在页面的代码文件(aspx.cs)。在AppCode中填充方法时,初始化不起作用,并且出现以下错误。

Cannot have multiple items selected in a DropDownList. Please send a copy of this message to the Support. 

at System.Web.UI.WebControls.DropDownList.VerifyMultiSelect() 
at System.Web.UI.WebControls.ListControl.RenderContents(HtmlTextWriter writer) 
at System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) 
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
at System.Web.UI.Control.Render(HtmlTextWriter writer) 
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) 
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) 
at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) 
at System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) 
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) 
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) 
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
at ASP.fleetnetnew_masterpages_fleetpopuppage_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\fleetintlpdvl\204737b8\cd934b62\App_Web_jw12vu5i.2.cs:line 0 
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
at System.Web.UI.Control.Render(HtmlTextWriter writer) 
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
at System.Web.UI.Page.Render(HtmlTextWriter writer) 
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

我需要使用AppCode来填充DDL,所以我可以从一个中心点填充我的DDL。我在这里错过了什么?

+0

背后难道你继承的代码重写'SelectedValue'财产? – DavidG 2014-10-20 12:42:41

+0

看来你在调用FillDropDownList两次。这可能是问题吗? – SmartDev 2014-10-20 12:43:44

+0

@SmartDev为什么会这样呢? – DavidG 2014-10-20 12:44:53

回答

0

1)添加您的aspx页面内下拉列表中(使用AppendDataBoundItems)

<asp:DropDownList runat="server" ID="drpTest" AppendDataBoundItems="true" /> 

2)在你的C#代码页

public partial class Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      FillDropDownList(drpTest); 

      // select False after filling drop down list 
      drpTest.Items.FindByValue("False").Selected = true; 
     } 

     public static void FillDropDownList(ListControl drp) 
     { 
      drp.Items.Clear(); 
      drp.Items.Add(new ListItem("Please select", "")); 
      drp.Items.Add(new ListItem("False", false.ToString())); 
      drp.Items.Add(new ListItem("True", true.ToString())); 
     } 
    } 
相关问题