[英]How can I update an ASP.NET ListView from the code behind?
我的HTML中有一個ListView
和ObjectDataSource
,如下所示:
<asp:ListView ID="ltwEventos" DataSourceID="odsEventos" runat="server">
<EmptyDataTemplate>
// Some HTML.
</EmptyDataTemplate>
<ItemTemplate>
// Some HTML.
</ItemTemplate>
</asp:ListView>
<asp:ObjectDataSource ID="odsEventos" EnablePaging="true"
TypeName="Fotografo2016._Default" SelectMethod="ObterEventos"
SelectCountMethod="ObterTotalEventos" MaximumRowsParameterName="RegistrosPorPagina"
StartRowIndexParameterName="IndiceInicial" runat="server">
<SelectParameters>
<asp:Parameter Name="IDFotografo" Type="Int32" DefaultValue="140" />
<asp:Parameter Name="Descricao" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
我正在使用數據庫的前10個項目填充ListView
(使用ItemDataBound
事件)。 很好
但是,當用戶單擊某個按鈕時,我想用接下來的10個項目(在后面的代碼中)更新ListView
,並在頁面中顯示這20個項目。 依此類推,每當他單擊該按鈕時,就會添加10多個項目。
我不想再次從數據庫中選擇所有項目,我只想每次帶上新的10個項目並將它們添加到ListView
。
我知道我可以使用JavaScript來做到這一點(通過Ajax調用),但是我在考慮是否可以通過其他方式來做到這一點。
我已經嘗試了上面的代碼,但是這個新項目沒有出現在頁面中。 我對這些組件不是很熟悉,所以我不知道該怎么辦。
Private Sub btnBuscaHeader_Click(sender As Object, e As EventArgs) Handles btnBuscaHeader.Click
Dim Test As New ListViewDataItem(Me.ltwEventos.Items.Count, Me.ltwEventos.Items.Count)
Test.DataItem = "Teste"
Me.ltwEventos.Items.Add(Test)
End Sub
可以使用這種結構嗎?
PS:我正在使用VB,但答案也可能是C#代碼。
您可以將查詢用於ROW_NUMBER(MSSQL SERVER;對於其他數據庫,請參見等效功能)之類的查詢,在該查詢中確定要返回的行,以防止查詢記錄已查詢的行。
請參閱示例拾取數字50和60之間的線的示例:
USE AdventureWorks2012;
GO
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS RowNumber
FROM Sales.SalesOrderHeader
)
SELECT SalesOrderID, OrderDate, RowNumber
FROM OrderedOrders
WHERE RowNumber BETWEEN 50 AND 60;
根據場景的不同,使用Take()和Skip()Linq方法也可能會有所幫助...
此代碼示例了我在上一個答案中所做的評論:
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void BtnAdd_Click(object sender, EventArgs e)
{
List<Person> list = new List<Person>() { new Person("John"), new Person("Louis"), new Person("Walter") };
Session["DataSource"] = list;
UpdateListView();
}
protected void BtnUpdate_Click(object sender, EventArgs e)
{
List<Person> list = (List<Person>)Session["DataSource"];
list.Add(new Person("NewPerson"));
Session["DataSource"] = list;
UpdateListView();
}
private void UpdateListView()
{
ListView1.DataSource = (List<Person>)Session["DataSource"];
ListView1.DataBind();
}
}
public class Person
{
string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
public Person(string nome)
{
_name = nome;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.