【问题标题】:Maintain DataTable & Variables throughout Session在整个会话期间维护数据表和变量
【发布时间】:2012-08-28 01:45:14
【问题描述】:

我创建了一个网站,我必须在其中维护数据表和内存中的一些变量。数据表或变量中的数据/值将根据登录的用户而有所不同。怎么保养?

【问题讨论】:

  • 关于会话 - 请注意,即使您在多个选项卡中运行您的网站,会话变量也会在它们之间重复使用。

标签: c# asp.net session datatable


【解决方案1】:

您可以将它们另存为

DataTable dt = new DataTable();
// I assumed that dt has some data

Session["dataTable"] = dt; // Saving datatable to Session
// Retrieving 
DataTable dtt = (DataTable) Session["dataTable"]; // Cast it to DataTable

int a = 43432;
Session["a"] = a;
// Retrieving 
int aa = (int) Session["a"];

// classes
  class MyClass
  {
    public int a { get; set; }
    public int b { get; set; }
  }

  protected void Page_Load(object sender, EventArgs e)
  {

    MyClass obj = new MyClass();
    obj.a = 5;
    obj.b = 20;

    Session["myclass"] = obj;  // Save the class object in Session
     // Retrieving 
      MyClass obj1 = new MyClass();
       obj1 = (MyClass) Session["myclass"]; // Remember casting the object
   }

【讨论】:

  • 我是否也可以将自定义类对象的值存储在会话中?
  • @RohitChaudhari - 是的,您几乎可以将任何内容存储到会话对象中。
  • 是的,您可以存储任何数据类型。 Session支持对象数据类型,所有类型都派生自对象数据类型。
【解决方案2】:

将 Session 与数据表结合使用的完美方式是......

  public class clsSession
    {
        public static DataTable dtEmp
        {
            get
            {
                if (HttpContext.Current.Session["dtEmp"] != null)
                {
                    return (DataTable)HttpContext.Current.Session["dtEmp"];
                }
                else
                    return new DataTable();
            }
            set
            {
                HttpContext.Current.Session["dtEmpAddres"] = value;
            }
        }
    }

您可以将数据表存储为clsSession.dtEmp = new DataTable();

【讨论】:

  • 你能解释一下为什么set中的会话变量名和get不一样吗??
猜你喜欢
  • 2011-08-19
  • 1970-01-01
  • 2011-05-20
  • 1970-01-01
  • 2013-06-24
  • 2012-03-08
  • 1970-01-01
  • 2017-12-03
  • 2013-06-02
相关资源
最近更新 更多