C# 向会话添加新内容

C# 向会话添加新内容,c#,asp.net,visual-studio-2010,sql-server-2008,session,C#,Asp.net,Visual Studio 2010,Sql Server 2008,Session,我有一个asp.net下拉列表和一个asp.net gridview控件。 更改dropdownlist元素时,将从数据库中获取新行 我正在将其存储在会话中。下次dropdownlist元素发生更改时,将 是从数据库中获取的新行,我也想将该行添加到会话中 我在下面选择了dropdownlist\u DexChanged事件: protected void ddlClient_SelectedIndexChanged(object sender, EventArgs e) { in

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

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

我在下面选择了dropdownlist\u DexChanged事件:

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();

}

每次我的dropdownlist更改时,我都不知道如何在会话变量中添加我的行?

所以这确实是
合并的一个问题,对吗?@SqlSamurai请记住,每次分配或使用会话[“变量”]时,都会发生序列化,如果数据量很大,这会影响性能,您可以使用中间变量访问会话变量一次,并在需要时更新它一次
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();

}