【问题标题】:Adding new content to a session向会话添加新内容
【发布时间】:2013-08-27 15:37:42
【问题描述】:

我有一个 asp.net 下拉列表和一个 asp.net gridview 控件。 在更改下拉列表元素时,会从数据库中获取一个新行。

我将其存储在会话中。下次下拉列表元素发生更改时,将 是从数据库中获取的新行,我也想将该行添加到会话中。

我在下面有 dropdownlist_selectedIndexchanged 事件:

protected void ddlClient_SelectedIndexChanged(object sender, EventArgs e)
    {
    int x = int.Parse(ddlClient.SelectedValue);

    DataSet ds = GetRowFromDatabase( x);
    Session["old"] = ds;
    ((DataSet)Session["old"]).Merge(ds);

    gridview.DataSource = Session["old"] ;
    gridview.DataBind();

}

每次我的下拉列表更改时,我无法弄清楚如何在会话变量中继续追加我的行?

【问题讨论】:

  • 所以这确实是Merge 的问题,对吧?

标签: c# asp.net visual-studio-2010 sql-server-2008 session


【解决方案1】:
protected void ddlClient_SelectedIndexChanged(object sender, EventArgs e)
    {
    int x = int.Parse(ddlClient.SelectedValue);

    DataSet ds = GetRowFromDatabase( x);

    //the first time initialize the session variable
    if(Session["old"] == null)
    {
        Session["old"] = ds;
    }
    else
    { 
        ((DataSet)Session["old"]).Merge(ds);
    }

    gridview.DataSource = Session["old"] ;
    gridview.DataBind();

}

【讨论】:

  • @SqlSamurai 请记住,每次分配或使用 session["variable"] 时,都会发生序列化,如果数据很大,这会影响性能,您可以使用中间变量来访问会话变量一次,并在需要时更新一次
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多