在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
- >返回空而不是选定的值。
答案 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。