atm我尝试减少我的网页中的加载时间,为此我尝试将每个长加载方法提取到JS或作为PageMethod / WebMethod在页面构建后加载它以给用户更好的感觉..
现在我有一个带有ODS的GridView,如果用户没有清理他的私人消息框,那么它将加载大约100-200个周期。 所以我想现在显示第一个(比如说)20个托管,然后加载其他的托管,所以在99%的情况下,用户只需要第一个托管中的一个。
这是我的代码atm:
<asp:ObjectDataSource ID="odsIncome" runat="server" SelectMethod="GetAllPMsAsReciepient"
TypeName="DAL.PMDAL">
<SelectParameters>
<asp:CookieParameter CookieName="UserID" DbType="Guid" Name="userID" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:GridView ID="gridIn" runat="server" AutoGenerateColumns="False" DataSourceID="odsIncome"
OnRowDataBound="gridItemOverview_RowDataBound" AllowPaging="True" EmptyDataText="Keine Nachrichten vorhanden"
PageSize="50" Width="100%" OnRowCommand="gridIn_RowCommand" OnPreRender="gridIn_PreRender">
<HeaderStyle BackColor="#bfcfde" BorderColor="Gray" />
<RowStyle BackColor="#ccdded" BorderColor="Gray" />
<EmptyDataRowStyle BackColor="#ccdded" BorderColor="Gray" CssClass="emptyDataRow" Height="30px" HorizontalAlign="Center" />
<Columns>
<asp:TemplateField HeaderText="Betreff" HeaderStyle-Width="550px" ItemStyle-HorizontalAlign="left">
<%--small 675--%>
<ItemTemplate>
<asp:Image ImageUrl="~/Images/unread.png" ID="imgUnread" runat="server" Width="10px" />
<asp:Image ImageUrl="~/Images/return3.png" ID="imgAnswered" runat="server" Width="10px" />
<asp:HyperLink CssClass="pmLink" ID="linkTitle" NavigateUrl='<%# Eval("PMID","~/PM/ShowPM.aspx?type=In&id={0}") %>'
runat="server"><%# Eval("Title") %></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Absender" HeaderStyle-Width="200px" ItemStyle-HorizontalAlign="left">
<%--small 250--%>
<ItemTemplate>
<asp:HyperLink CssClass="pmLink" ID="linkSender" NavigateUrl='<%# Eval("SenderID","~/User/ShowProfile.aspx?id={0}") %>'
runat="server"><%# Eval("User1.Username") %></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderStyle-Width="170px" ItemStyle-HorizontalAlign="left" DataField="Timestamp"
HeaderText="Datum" SortExpression="Timestamp">
<%--small 200--%>
</asp:BoundField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgDelete" Width="15px" ImageUrl="~/Images/delete.png" runat="server"
CommandName="dele" CommandArgument='<%# Eval("PMID") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
假设我创建了一个新的方法来加载20个托管,我可以在ODS的SelectMethod-Property中输入Method - 但是如何使用WebMethod或JS重新加载GridView / ODS来重新加载所有的entrys和覆盖已经绘制的表格?
答案 0 :(得分:0)
从WebMethod完成的任何操作都必须使用JavaScript代码重新加载。使用Web方法时,无法从服务器执行此操作。我强烈建议使用ListView控件,或者甚至更好,使用模板框架,如JQuery或其他框架中的几个插件之一。
但是,如果您使用带有自定义分页方法的存储过程,则可以获得不错的性能,例如: