【问题标题】:how to add items to datalist after postback without accessing database again如何在回发后将项目添加到数据列表而不再次访问数据库
【发布时间】:2011-02-27 16:46:54
【问题描述】:

我有一个包含一组项目 (cmets) 的 DataList,用户可以留下新的 cmets,因此在他们发送新评论后,我想将其添加到列表中。我知道我可以再次访问数据库检索所有数据并再次调用 DataBind 或者缓存 cmets 列表以避免访问数据库,但是这些选项是不可能的,它们会影响性能或内存,我只想访问 Items 属性在 DataList 中并添加一个新的,如果可以使用 Bind,因为我有很多属性要设置,甚至在这个里面还有另一个 DataList(回复 cmets)

解决这个问题的最佳方法是什么?

【问题讨论】:

    标签: c# webforms postback datalist addition


    【解决方案1】:

    大概客户端图形控件(您的 DataList)绑定到包含要显示的项目列表的对象。如果对象最初是用数据库调用填充的,但您现在不关心数据库是否更新,或者不关心图形显示是否与数据库不同步,而只想在图形中添加另一个项目显示,您可以简单地将新项目添加到已绑定 DataList 的基础对象,并调用 DataBind()。

    【讨论】:

    • 感谢您的回答,但该怎么做呢?我不能写 MyDataList.Items.Add,项目没有那个方法,我在那一刻没有列表对象,因为我在回发中并且我无法缓存它们,所以我可以添加新项目到列表并重新绑定。
    • 您不直接将项目添加到 DataList,而是将其添加到已绑定的数据对象中。如果您需要它是有状态的,您可以将该数据对象存储在会话变量中。
    • 我明白你的建议,但我不能在会话中存储对象,它会影响内存和性能,与再次访问数据库相同,如果我找不到解决方案,我会需要更改所有页面并通过 Ajax 调用和 jquery 完成所有操作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2020-06-14
    • 1970-01-01
    相关资源
    最近更新 更多