Asp.net 通过页面导航aspx.net保持数据表的存在

Asp.net 通过页面导航aspx.net保持数据表的存在,asp.net,Asp.net,我有一个数据表,它是动态创建的,并绑定到网格视图,页面上有一个按钮,当用户点击时,该按钮会在另一个页面上重定向用户。这是第一页。现在,当用户在第2页被重定向时,如果他想回到第1页,我想在页面加载时显示数据表。一些示例代码如何做到这一点 第1页 protected void Page_Load(object sender, EventArgs e) { dtCurrentTable = (DataTable)ViewState["Markici"]; GridView2.DataS

我有一个数据表,它是动态创建的,并绑定到网格视图,页面上有一个按钮,当用户点击时,该按钮会在另一个页面上重定向用户。这是第一页。现在,当用户在第2页被重定向时,如果他想回到第1页,我想在页面加载时显示数据表。一些示例代码如何做到这一点

第1页

protected void Page_Load(object sender, EventArgs e)
{
    dtCurrentTable = (DataTable)ViewState["Markici"];
    GridView2.DataSource = dtCurrentTable();
    GridView2.DataBind();
 }

 public void Button2_Click(object sender, EventArgs e)
 {  
      Response.Redirect("Page2.aspx");
 }
  //method for insert dataTable in database
public void Button2_Click(object sender, EventArgs e)
    { 
     dtCurrentTable = (DataTable)ViewState["Markici"];
            Session["Markici"] = dtCurrentTable;
            dtCurrentTable = (DataTable)Session["Markici"];
            GridView2.DataSource = dtCurrentTable;
            GridView2.DataBind();

            SqlCommand cmd = new SqlCommand("InsertMarkica",conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "InsertMarkica";
            foreach (DataRow dr in dtCurrentTable.Rows)
            {
                cmd.Parameters.Clear();
                //SqlCommand cmd = new SqlCommand(cmdstr, conn);
                cmd.Parameters.AddWithValue("@FirmaID", dr["FirmaID"]);
                cmd.Parameters.AddWithValue("@Godina", dr["Godina"]);
                cmd.Parameters.AddWithValue("@Kasa", dr["KasaID"]);
                cmd.Parameters.AddWithValue("@Masa", dr["Masa"]);
                cmd.Parameters.AddWithValue("@MarkicaID", dr["MarkicaID"]);
                cmd.Parameters.AddWithValue("@Datum", dr["Datum"]);
                cmd.Parameters.AddWithValue("@VrabotenID", dr["VrabotenID"]);
                cmd.Parameters.AddWithValue("@Smena", dr["Smena"]);
                cmd.Parameters.AddWithValue("@VkIznos", dr["VkIznos"]);
                cmd.Parameters.AddWithValue("@VkDanok", dr["VkDanok"]);
                cmd.ExecuteNonQuery();
                cmd.Connection = conn;
            }
第2页

public void Button2_Click(object sender, EventArgs e)
{
    Reponse.Redirect("Page1.aspx");
   //Now when is redirected on page1, it should be present data Tale,
   //needed that data Table for inserting records in database
}

您可以创建一个会话变量,如下所示

protected void Page_Load(object sender, EventArgs e)
{
    dtCurrentTable = (DataTable)ViewState["Markici"];
    Session["Markici"]=dtCurrentTable;
    GridView2.DataSource = dtCurrentTable();
    GridView2.DataBind();
}
 dtCurrentTable = (DataTable)Session["Markici"];
当前会话中的任何页面上都不能使用
会话[“Markici”]
的值。您需要按如下方式进行转换和使用

protected void Page_Load(object sender, EventArgs e)
{
    dtCurrentTable = (DataTable)ViewState["Markici"];
    Session["Markici"]=dtCurrentTable;
    GridView2.DataSource = dtCurrentTable();
    GridView2.DataBind();
}
 dtCurrentTable = (DataTable)Session["Markici"];

您可以使用
Session
来保存数据。例如,我不知道如何做。请在问题中添加一些代码,以便可以相应地更改。Session[“someKey”]=myDataTable-请注意,DataTable是重对象。但请记住,会话可能会在配置文件中的预定义值或设置值(默认值为20分钟)后过期,现在当我尝试在数据库中插入该数据表时,它会给我一个错误:“无法将值NULL插入列'FirmaID',表'KasaEP.dbo.Markici';列不允许空值。插入失败。声明已终止。“”“所有列都有值,我无法理解为什么它会给我这个错误OK,所以用户在20分钟内没有返回的内容,会话将过期,用户将丢失表…”。。。