在 UpdatePanel 里有一个 ListView 控件,在模板中使用了 LinkButton,并设置了 CommandName 为 Select。可是,点击 LinkButton 会导致页面全部刷新,而不是局部刷新,该如何处理?这里是代码:
<body>
    <form runat="server">
    <div>
        <asp:ScriptManager runat="server" />
        <asp:ObjectDataSource ID="SalesOrderDataSource" runat="server" SelectMethod="GetSalesOrders"
            TypeName="SalesOrderDao" EnablePaging="True" SelectCountMethod="GetRowCount" />
        <fieldset>
            <div>
                <asp:TextBox runat="server" />
            </div>
        </fieldset>
        <asp:UpdatePanel runat="server">
            <ContentTemplate>
                <asp:LinkButton ID="ShowOrHideLinkButton" runat="server" OnClick="OnShowOrHideClicked">LinkButton</asp:LinkButton>
                <asp:Panel ID="SalesOrderListPanel" runat="server" Visible="false">
                    <asp:ListView ID="SalesOrderListView" runat="server" DataKeyNames="Id" DataSourceID="SalesOrderDataSource">
                        <LayoutTemplate>
                            <table>
                                <thead>
                                    <tr>
                                        <th />
                                        <th>ID</th>
                                        <th>Product</th>
                                        <th>Quantity</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr runat="server" id="itemPlaceholder" />
                                </tbody>
                            </table>
                        </LayoutTemplate>
                        <ItemTemplate>
                            <tr>
                                <td>
                                    <asp:LinkButton runat="server" Text="Select" CommandName="Select" />
                                </td>
                                <td>
                                    <%#Eval("Id")%>
                                </td>
                                <td>
                                    <%#Eval("Product")%>
                                </td>
                                <td>
                                    <%#Eval("Quantity")%>
                                </td>
                            </tr>
                        </ItemTemplate>
                    </asp:ListView>
                    <asp:DataPager ID="SalesOrderDataPager" runat="server" PagedControlID="SalesOrderListView">
                        <Fields>
                            <asp:NumericPagerField />
                            <asp:NextPreviousPagerField />
                        </Fields>
                    </asp:DataPager>
                </asp:Panel>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="ShowOrHideLinkButton" EventName="Click" />
                <asp:AsyncPostBackTrigger ControlID="SalesOrderDataPager" EventName="DataBinding" />
            </Triggers>
        </asp:UpdatePanel>
    </div>
    </form>
</body>public partial class _Default : System.Web.UI.Page
{
    protected void OnShowOrHideClicked(object sender, EventArgs e)
    {
        this.SalesOrderListPanel.Visible = !this.SalesOrderListPanel.Visible;
    }
}public class SalesOrderDao
{
    public IEnumerable<SalesOrder> GetSalesOrders(int startRowIndex, int maximumRows)
    {
        for (int i = 0; i < maximumRows; i++)
        {
            int num = i + startRowIndex + 1;            yield return new SalesOrder()
            {
                Id = num,
                Product = string.Format("Product {0}", num),
                Quantity = num
            };
        }
    }    public int GetRowCount()
    {
        return 123;
    }
}public class SalesOrder
{
    public int Id { get; set; }
    public string Product { get; set; }
    public int Quantity { get; set; }
}