当我单击列表视图的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();
}