这是情景。
我有一个带有TextBox的搜索页面,允许有人输入搜索词并按回车键。 (它触发TextChanged)。我有一个DropDownList,它指定将要执行的搜索类型。它在标记中定义如下:
<asp:DropDownList ID="lstSearchType" runat="server" AutoPostBack="false">
<asp:ListItem Value="0">Last, First</asp:ListItem>
<asp:ListItem Value="1">Last</asp:ListItem>
<asp:ListItem Value="2">First</asp:ListItem>
<asp:ListItem Value="3">Liberty ID</asp:ListItem>
<asp:ListItem Value="4">E-mail</asp:ListItem>
<asp:ListItem Value="5">Telephone</asp:ListItem>
<asp:ListItem Value="6">Birthday (exact m/d/yyyy)</asp:ListItem>
<asp:ListItem Value="7">SSN (exact ###-##-####)</asp:ListItem>
<asp:ListItem Value="8">Address</asp:ListItem>
</asp:DropDownList>
如您所见,AutoPostBack设置为false,并且没有事件连接。
按Enter键将触发TextBox的OnTextChanged事件,该事件执行搜索并更新UpdatePanel中的GridView。此UpdatePanel将其UpdateMode设置为条件并具有一个触发器:搜索TextBox的TextChanged事件。
这很简单。
它几乎可以很好地工作。
每当我更改搜索类型时,下一次搜索都会执行完整的回发。除非我再次更改搜索类型,否则所有后续搜索都会进行部分回发(根据需要)。
此规则有一个例外:如果我加载页面并立即更改搜索类型,则不会执行完整的回发。因此,在任何回发(完全或部分)之前DropDownList的第一次更改不会触发完整的回发。
完全披露: 我正在做很多JavaScript来改变异步请求期间gridview的外观。我在这里没有详细说明,因为它似乎无关紧要。仅当未连接JavaScript的DropDownList发生更改时,才会出现此问题。
有什么想法吗?
这让我发疯了。其他一切都在发挥作用。
提前致谢, 克里夫
答案 0 :(得分:0)
我明白了。问题是DropDownList不在UpdatePanel中。如果没有完整的回发,它就无法获得价值。由于TextChanged事件连接,TextBox对此免疫。