发回后退下载列表

时间:2011-08-09 10:08:08

标签: c# asp.net postback autopostback

on this site 当dropdownlist只包含一个项目时,单击它时不会导致回发

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DropDownList1.Items.Add("a");

        DropDownList2.Items.Add("a");
        DropDownList2.Items.Add("b");

    }
}


protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    Response.Write(DropDownList1.Text);//does not work ????????????
}
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
    Response.Write(DropDownList2.Text);

}

on this site

5 个答案:

答案 0 :(得分:1)

DropDownList1_SelectedIndexChanged将永远不会触发,因为您在DropDownList1中只有1个项目,因此索引永远不会被更改。

<强>更新

你可以做的是向dropdownlist1添加一个空值,就像这样

<asp:DropDownList runat="server" ID="DropDownList1">
    <asp:ListItem Value="0" Text="Choose option" Selected="true" />
    <asp:ListItem Value="1" Text="a" />
</asp:DropDownList>

答案 1 :(得分:0)

DropDownList1_SelectedIndexChanged不会触发,因为所选索引已经aDropDownList Events列表可在DropDownList Events找到。应触发事件DataBound,您可以在Response.Write(DropDownList1.Text);

进行操作

答案 2 :(得分:0)

可能您可以在索引0处添加一个新项目,其中显示“选择”,当用户更改选择时,它将导致回复...

DropDownList1.Items.Add("SELECT");
DropDownList1.Items.Add("a");

答案 3 :(得分:0)

带有asp:DropDownList

AutoPostBack="true"呈现为具有客户端select事件的html onchange标记,并自动生成一个java脚本函数来处理此客户端{{1}事件。

即。如果你有:

onchange

呈现的页面源看起来像:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
    </asp:DropDownList>

正如您所见,<select name="DropDownList1" onchange="javascript:setTimeout('__doPostBack(\'DropDownList1\',\'\')', 0)" id="DropDownList1"> 必须触发客户端postback事件。仅当html onchange标记包含两个或更多onchange个可选项时,才会出现客户端select

我看到解决方案已经发布,只是觉得很好解释一下。

用两个词来说,option控件必须有多个asp:ListItem

答案 4 :(得分:0)

我想要一个类似的东西。下面的代码为我做了。确保它是SelectedIndexChanged方法中的第一个代码。

//fixes error when postback 
    if (DropDownList.SelectedIndex == 0)
    {
       DropDownList.SelectedIndex = 1;
    }