Repeater ItemCommand不适用于大数据

时间:2015-12-23 21:25:41

标签: asp.net webforms repeater

我有一个webform,它显示了一个使用转发器的项目列表,并且每个项目都有一个Edit按钮。 通过单击“编辑”按钮,页面将重定向到“编辑”页面

HTML

<asp:Repeater ID="r epeaterRequest" runat="server">
    <ItemTemplate>
        <asp:LinkButton ID="btnEdit" CommandArgument='<%# Eval("ItemID") %>' CommandName="Edit" runat="server">Edit</asp:LinkButton>
    </ItemTemplate>
</asp:Repeater>

Code Befind

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        if (Page.IsPostBack == false)
        {
            List<MyItem> data = new repository().getData();
            repeater.DataSource = data;
            repeater.DataBind();
        }
    }

 private void repeater_ItemCommand(object source, RepeaterCommandEventArgs e)
 {
     int itemId;
     if (int.TryParse(e.CommandArgument.ToString(), out itemId))
     {
         if (e.CommandName == "Edit")
         {
             Response.Redirect("~/Edit.aspx?id=" + itemId, false);
         }
     }
}

问题是当列表项的数量变得像List中的2800个项目一样大时,它会在单击Edit按钮后停止。 ItemCommand不会被调用或需要太长时间才能进入ItemCommand函数。 (加载和呈现数据很快。当单击Edit按钮时,它会停止。

当1000件物品较少时,一切都还可以。

我已尝试将此<httpRuntime maxRequestLength="102400" executionTimeout="300" />添加到Web.Config,但无效。

2 个答案:

答案 0 :(得分:0)

您是否尝试向转发器添加一些简单的分页。这是一次加载到DOM中的大量数据。请参阅this了解相关信息。

答案 1 :(得分:0)

为什么不将LinkBut​​ton更改为简单的超链接?

<asp:Repeater ID="r epeaterRequest" runat="server">
    <ItemTemplate>
        <a href='<%# Eval("href") %>'>Edit</a>
    </ItemTemplate>
</asp:Repeater>

我认为在您的情况下这是更好的解决方案。 Caz'你也是这样做的,但是用另一种方式。