开发者

Changing dropdownlist selection causes full postback. (it's more interesting than it sounds)

开发者 https://www.devze.com 2022-12-29 22:38 出处:网络
Here\'s the scenario. I have a search page with a TextBox that allows someone to type in a search term and press enter. (Which fires TextChanged).I have a DropDownList that specifies the kind of sear

Here's the scenario.

I have a search page with a TextBox that allows someone to type in a search term and press enter. (Which fires TextChanged). I have a DropDownList that specifies the kind of search that will be performed. It is defined in the markup as follows:

                    <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>

As you can see, AutoPostBack is set to false, and there is no event hookup.

Pressing enter fires the OnTextChanged event for the TextBox, which performs a search and updates a GridView in an UpdatePanel. This UpdatePanel has its UpdateMode set to conditional and has one trigger: the TextChanged event of the search TextBox.

It's very simple.

And it works beautifully, almost.

Whenever I change the search type, the very next search does a full postback. All subsequent searches do partial postbacks (as desired) unless I change the search type again.

There is one exception to this rule: if I load the page and immediately change the search type, it doesn't do a full postback. So the first change of the DropDownList before any postback (full or partial) does not trigger a full postback.

Full Disclosure: I'm doing a lot of JavaScript to change the appearance of the gridview during async requests. I don't detail it here because it seems unrelated. This problem only occurs when a DropDownList with no JavaScript wired up is changed.

Any ideas?

This is driving me crazy. 开发者_C百科Everything else is working.

Thanks in advance, Clif


I figured it out. The problem was that the DropDownList was not in an UpdatePanel. It had no way to get the value without doing a full postback. The TextBox was immune to this because of the TextChanged event wiring.

0

精彩评论

暂无评论...
验证码 换一张
取 消