簡體   English   中英

如何從后面的代碼更新ASP.NET ListView?

[英]How can I update an ASP.NET ListView from the code behind?

我的HTML中有一個ListViewObjectDataSource ,如下所示:

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM