回发时DropDownList值为空

时间:2016-05-13 06:49:00

标签: c# asp.net drop-down-menu

Page_Load事件中,我将数据从db加载并绑定到DropDownList

在开始从db加载数据之前,我将默认值添加为:

ddlDrop.Items.Add(new ListItem("All","All"));
ddlDrop.SelectedIndex = 0;

循环:

ddldrop.Items.Add(new ListItem());

它完美无缺。

问题是当我更改SelectedIndex时,它是回发后但所选的DropDownList值是空的。

ddlDrop.SelectedItem.Value - >返回空而不是选定的值。

4 个答案:

答案 0 :(得分:1)

如果您要在pageload中添加以下代码。

 ddlDrop.Items.Add(new ListItem("All","All"));
 ddlDrop.SelectedIndex = 0;

每次回发都会执行。因此,您可以在每次回发时设置选定的索引0,并且您的选择将丢失。只需将代码置于if条件

  if(!IspostBack)// will prevent from executing on every postback
  {
       ddlDrop.Items.Add(new ListItem("All","All"));
       ddlDrop.SelectedIndex = 0;

  }

答案 1 :(得分:0)

here is the sample    


 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <triggers>
                  <asp:AsyncPostBackTrigger ControlID="ddldropdown" />
             </triggers>
        <ContentTemplate>

     <asp:dropbdown ID="ddldropdown" etc...../>

        </ContentTemplate>
    </asp:UpdatePanel>

答案 2 :(得分:0)

可能还有另一个问题,因为这个问题是enableviewstate属性.. 如果此值设置为false并且我们在回发后从db检索特定的下拉列表listitems,则状态可能会丢失,因为属性值为false。

触发此问题的常见错误可能是手动我们在后端将enableviewstate设置为false,而在视图中为true,因此请仔细检查此属性。

答案 3 :(得分:0)

首先在下拉列表中设置AppendDataBoundItems="true"

在开始从db加载数据时,默认值应该更改为

ddlDrop.Items.Insert(0, new ListItem("All", "All"));

它将在索引0处添加项目,这将是您的默认选择。那么您可以根据需要更改SelectedIndex,它将保留该值而不是0。