SqlDataource based on sessionID

本文关键字:sessionID on based SqlDataource | 更新日期: 2023-09-27 18:31:36

我有以下代码,我正在尝试使用它来创建基于sqldatasource的动态网格视图。我遇到的问题是我正在使用的 sqldatasource.ID 基于会话 ID。现在,当我调用它时page_load一切似乎都正常工作,但是如果我刷新页面,它不起作用,现在我知道为什么了,这是因为我在page_load中有一个 if 语句,该语句检查回发是否存在,如果不存在,那么它使用 getDefaultGrid() 函数加载正常,但如果它是回发, 我尝试重新加载 getDefaultGrid() 函数,但这次尝试传递 sqldatasource ID 不起作用,或者我只是做错了。任何帮助都非常感谢!!

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        getDefaultGrid(getSessionID(), startGrid());
    }
    else
    {
        getDefaultGrid(getSessionID(), (SqlDataSource)getSessionID());
    }
}

protected void getDefaultGrid(string sessionID, SqlDataSource ds)
{
    ds.SelectCommand = "SELECT * FROM [temp] WHERE SessNum = @SESSNUM";
    ds.SelectParameters.Add("SESSNUM", sessionID);
    GridView1.DataSource = ds;
    GridView1.DataBind();
}

protected SqlDataSource startGrid() 
{
    string ConnString = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
    String currentSessionID = getSessionID();
    SqlDataSource sqlDS = new SqlDataSource();
    //sqlDS.ConnectionString = "unionConnectionString";
    sqlDS.ConnectionString = ConnString;
    sqlDS.ID = getSessionID();
    sqlDS.InsertCommand = "INSERT INTO [temp] ([SessNum], [Row], [Size], [Description], [Quantity], [Unit], [Duration], [DurationType], [Amount])VALUES (@SESSNUM, @ROW, @SIZE, @DESCRIPTION, @QUANTITY, @UNIT, @DURATION, @DURATIONTYPE, @AMOUNT)";
    sqlDS.InsertParameters.Add("SESSNUM", currentSessionID.ToString());
    sqlDS.InsertParameters.Add("ROW", "1");
    sqlDS.InsertParameters.Add("SIZE", "Size");
    sqlDS.InsertParameters.Add("DESCRIPTION", "Description");
    sqlDS.InsertParameters.Add("QUANTITY", "Quantity");
    sqlDS.InsertParameters.Add("UNIT", "Unit");
    sqlDS.InsertParameters.Add("DURATION", "Duration");
    sqlDS.InsertParameters.Add("DURATIONTYPE", "DurationType");
    sqlDS.InsertParameters.Add("AMOUNT", "Amount");
    sqlDS.Insert();
    return sqlDS;
}
protected string getSessionID()
{
    string session = HttpContext.Current.Session.SessionID;
    return session;
}

SqlDataource based on sessionID

创建一个新的SQLDATASOURCE实例,并将会话 ID 传递给它们。已经提出了类似类型的问题,您可以简单地浏览它们。首先检查存储会话 ID 的页面,然后逐步前进。使用断点。