updatepanel内部的ListView导致完整回发

时间:2019-01-01 11:00:14

标签: asp.net listview updatepanel

当我单击列表视图的DataPager时,尽管控件位于更新面板上,但整个页面都会刷新。我希望只更新列表视图。这是aspx代码 关于这个问题。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
      <ContentTemplate>

           <asp:ListView ID="lv"  runat="server" 
              ItemPlaceholderID="ItemPlaceHolder" 

              >
            <LayoutTemplate>
               <div class="container">
                   <div class="row">
                       <div runat="server" class="col-sm-4" id="ItemPlaceHolder"></div>
                   </div>
               </div>
                <asp:DataPager ID="lvDataPager" runat="server"
                    QueryStringField ="id"
                    PageSize="3">
                    <Fields>
                        <asp:NumericPagerField ButtonType="Button"/>
                    </Fields>
                </asp:DataPager>
             </LayoutTemplate>

              <ItemTemplate>
                <div class="col-sm-4"> 
                    Title: <%# Eval("title") %> <br />
                    Href: <%# Eval("href") %> <br />
                    Visited: <%# Eval("visited") %><br />

                </div>

              </ItemTemplate>


          </asp:ListView>
</ContentTemplate>    
    </asp:UpdatePanel>

背后的代码: 在页面加载事件中,我创建绑定到ListView的数据源。

 protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack) return;
            DataTable dt = new DataTable();
            if (ViewState["data"] != null)
            {
                dt = (DataTable)ViewState["data"];
            }
            else
            {
                dt.Columns.Add("id");
                dt.Columns.Add("title");
                dt.Columns.Add("href");
                dt.Columns.Add("visited");
                dt.Rows.Add(0, "google", "http://www.google.com", false);
                dt.Rows.Add(1, "bing", "http://www.bing.com", false);
                dt.Rows.Add(2, "yahoo", "http://www.yahoo.com", false);
                for (int i = 3; i <= 30; i++)
                {
                  dt.Rows.Add(i, "mywebsite", "http://www.mywebsite.com", false);
                }
                ViewState["data"] = dt;

            }

            BindLV();
}

private void BindLV()
        {
            DataTable dt = (DataTable)ViewState["data"];
            lv.DataSource = dt;
            lv.DataBind();
        }

0 个答案:

没有答案