1
背景: ASP.NET頁面上的兩個按鈕。當一個會話更新時,爲什麼不同的會話變量更改值?
按鈕1: 數據被加載到一個數據集。 2會話變量,會話[「a」]和會話[「b」]分配給DataSet。
按鈕2: 會話[ 「一個」]被轉換爲數據集。記錄從DataSet中刪除。
問題:
中的AcceptChanges之前()函數被調用,無論Session變量發生變化,以反映刪除操作(Rows.Count爲1以下)。爲什麼會發生?
當然DataSet「ds」不能再存在嗎?
protected void Button1_Click(object sender, EventArgs e)
{
string StringContainingSQLConnection = @"server=someserver;database=Standby;uid=StandbyUser;password=pass;";
SqlDataAdapter adp = new SqlDataAdapter("select * from CoreData", StringContainingSQLConnection);
DataSet ds = new DataSet();
adp.Fill(ds);
Session["a"] = ds;
Session["b"] = ds;
}
protected void Button2_Click(object sender, EventArgs e)
{
DataSet ds = ((DataSet)Session["a"]);
foreach (DataRow drw in ds.Tables[0].Rows)
{
drw.Delete();
ds.AcceptChanges();
Session["a"] = ds;
break;
}
}
爲了清楚起見,我在foreach循環中刪除了條件IF語句,只是刪除第一條記錄來證明這一點。
Joshua的回答是正確的。您可能需要設置會話[「b」] = ds.Copy(),因爲它會創建一個新的數據集,它是原始數據的副本。 – momar
thanx momar。你的.Copy()做了訣竅。非常感激。 –