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);
}
答案 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
不会触发,因为所选索引已经a
。
DropDownList 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;
}