如何在C#中创建动态服务器控件,以及如何在不再次加载所有记录的情况下将数据库中的更多记录附加到中继器控件

本文关键字:记录 数据库 情况下 控件 中继器 加载 服务器控件 动态 创建 不再 | 更新日期: 2023-09-27 18:00:29

我在一个页面上有一个中继器控件,我用数据库中的10条记录填充该控件。页面上有一个更多按钮;两者都在更新面板中。"更多"按钮将从数据库中获取接下来的10条记录。我想做的就是将新的10条记录附加到中继器中现有的10条纪录上。我该怎么做?

我需要它像Twitter和Facebook一样工作,加载服务器端控件,同时在没有分页的情况下将新记录附加到中继器控件。

这是我的.aspx代码:

<asp:repeater id="repStd" runat="server" onitemcommand="repStd_ItemCommand" 
    onitemdatabound="rptCore_ItemDataBound">                           
    <HeaderTemplate>                                                             
        <asp:Label ID="lnkStdName" runat="server" CommandName="Name" 
           CssClass="hrefclass">Name</asp:Label>                                        
    </HeaderTemplate>
    <ItemTemplate>
        <div class="headParent" id="STHeader" runat="server">                                                                          
            <asp:Label ID="lblStdName" runat="server" 
                Text='<%# DataBinder.Eval(Container.DataItem, "Project_Name") %>'></asp:Label>                                                                     
        </div>
        <div class="contentParent" id="STcontent" runat="server">                                                                  
            <asp:UpdatePanel ID="UpdatePanelST" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">                                                  
                <ContentTemplate>                                                                   
                    <cc1:AsyncFileUpload ID="STAsyncFileUpload_Pdf" runat="server" Width="500px" 
                    CompleteBackColor="White" OnClientUploadError="STuploadError" OnClientUploadComplete="STuploadComplete"                                                                                                                            
                    OnClientUploadStarted="STUploadedStartedPdfFile" UploadingBackColor="#CCDDEE"                                                                                                                            
                    UploaderStyle="Modern" ThrobberID="STinProgress" 
                    OnUploadedComplete="STPdf_FileUploadComplete" />                                                                           
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
    </ItemTemplate> 
</asp:repeater>

我的项目数据绑定:

public void rptCore_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    //load controls data and calculations here.. like fileupload control etc
}

如何在C#中创建动态服务器控件,以及如何在不再次加载所有记录的情况下将数据库中的更多记录附加到中继器控件

根据您的要求,通过调用table/div结构代替中继器来使用for/Foreach循环。。

对于您的逻辑,调用上一个索引中的10条记录,并添加到您的table/div中。

这将解决您的问题,而且非常有效,不会产生任何性能问题。。

例如,遵循以下逻辑-

DataTable dt = GetYourRows(); 
String html = "";
foreach(DataRow dr in dt.Rows)
{
 html += "<div>"+dr["column"].ToString();+"</div>";
}

然后在现有HTML代码中的任何位置使用html