导致对文本框进行单独回发的列表框

本文关键字:单独回 列表 文本 | 更新日期: 2023-09-27 18:29:34

复制问题的步骤

首先,在文本框中键入文本,但不要键入enter。然后,在列表框中选择其他索引。最后,查看ID(列表框和文本框)将显示在eventtarget上。

预期结果只有一个ID会显示在事件目标上,即初始化它的ID=列表框选定的索引更改。

这是代码:

<TextBox ID="TextBox1" runat="server" AutoPostBack="True"></asp:TextBox>
<ListBox ID="ListBox1" runat="server" AutoPostBack="True" onselectedindexchanged="ListBox1_SelectedIndexChanged">
<asp:ListItem Text="0" Value="0"></asp:ListItem>
<asp:ListItem Text="1" Value="1"></asp:ListItem>
<asp:ListItem Text="2" Value="2"></asp:ListItem>
</ListBox>
protected void Page_Load(object sender, EventArgs e){
if (IsPostBack)
{
string target = Request["__EVENTTARGET"] as string;
System.Windows.Forms.MessageBox.Show("__EVENTTARGET: " + target);
}
}
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}

导致对文本框进行单独回发的列表框

如果文本框的AutoPostBack属性设置为true,则文本框在失去焦点时将导致PostBack。这是经过设计的。请参阅文档。

因此,您得到的文本框ID实际上是预期的行为。如果您不希望这样,请考虑不将文本框AutoPostBack属性设置为true