【问题标题】:How can I store a GridView cell value to a session variable?如何将 GridView 单元格值存储到会话变量中?
【发布时间】:2009-03-09 07:31:13
【问题描述】:

如何将 GridView 的选定行的值存储到会话变量中?

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    从代码隐藏文件中,您将希望使用类似的东西来访问选定行中的基础数据项 (MyDataItem)。

    MyDataItem item = (MyDataItem)GridView1.Rows[GridView1.SelectedIndex].DataItem;
    Session["myItem"] = item;
    

    但请记住,gridview 已经为您存储了这些数据,因此您可能只想在需要时直接从 GridView 访问它。

    【讨论】:

      【解决方案2】:

      附带说明:我能否强烈建议您使用会话状态。

      除非您将其用作为当前用户缓存数据的存储,否则您可以在任何时间从例如一个数据库。

      如果没有,“会话”会回来并你。在某些时候,会有一个用户让浏览器保持打开的时间比您的会话寿命更长(例如,他们接到一个电话,匆忙出去吃午饭,匆忙参加会议......)。当他们回来时,他们希望完成他们正在做的事情。而且,如果您当时无法恢复所有会话数据,您将不得不重新引导您的用户重新开始(这对您的用户来说非常烦人),或者您将丢失一些信息(非常尴尬),或者最糟糕的情况情况,也是最常见的情况:您的应用程序将不再工作并崩溃(很简单:非常糟糕)。

      定义存储状态(查询参数、选定项等)的小型可序列化对象并使用 ASP.NET Viewstate 跨页面请求存储该状态是一种更好的方法。请注意,大多数 ASP.NET 控件已经使用视图状态来存储它们的数据。然后禁用页面中网格的视图状态,以大大减少视图状态中的数据量,并在每次请求时请求数据(在这里使用会话或 ASP.NET 缓存来提高应用程序的性能是安全的) .您将拥有一个更健壮且更具可扩展性的应用程序。

      这是更多的工作,但它会很快得到回报,而且会翻很多倍。

      【讨论】:

        【解决方案3】:

        ViewState 仅作用于一页内。它对回发问题很有用,但对跨页问题没有用。 Session 可以同时处理这两种情况,但它在安全性、寿命、传输时间方面存在一些限制……根据具体情况,您可以选择正确的选择。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-06
          • 2017-01-13
          • 2013-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-12
          相关资源
          最近更新 更多