sqlServer模式下 DataTable存session后,sesssion更新后取不到最新的Session
解决方案 »
- ★★★★★请问:如何统计GridView所有的数据条数!!!!!
- 急求助,数据库里存放文件大于2M(数据库与程序不在同一机器上) 用SQL读取时超时
- 如何给另一个页面的框架传递参数?
- 关于treeview的几个问题
- 添加IEWeb控件出错
- (急急急急急)关于随机数
- 概念问题:关于writer.AddAttribute(HtmlTextWriterAttribute.Style,pageStyle)
- 求 SiteServer CMS建站系统的源代码
- sap,net 与SQL 连接问题,大神指导
- (急救)图片缩小问题~~(菜鸟问题)
- 300分求 owc问题
- Treeview动态树问题 索引必须位于该列表的界限内。参数名:index
private DataTable SaveData()//string GoodsID)
{
try
{
int rowcount;
//读取内容中的数据
DataTable dt=Session["ExecCaptureData"] as DataTable;
BLL.PublicClass.DataSetSerializer.erroLog(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+Session.SessionID+"行号:(263)保存选中的数据\n\r");
BLL.PublicClass.DataSetSerializer.erroLog(Session["ExecCaptureTable"].ToString()+"\n\r");
BLL.PublicClass.DataSetSerializer.erroLog(dt.Rows.Count.ToString()+"\n\r");
rowcount=dt.Rows.Count;
DataRow dr=dt.NewRow();
// dr["GoodsID"]="";//主键
if(dt.Rows.Count==1)
{
dr["Num"]="1";
}
else
{
int num=int.Parse(dt.Rows[dt.Rows.Count-1]["Num"].ToString())+1;//当前最大的号加1
dr["Num"]=num.ToString();
}
dr["GoodsID"]=dr["Num"].ToString();//主键
dr["GoodsName"]="";//ProofID没赋值
dr["GoodsUnit"]="";
dr["GoodsNum"]="";
dr["GoodsCharacter"]="";
dr["Re"]="";
// dr["Menu_ID"]=""; dt.Rows.Add(dr);
this.Session.RemoveAll();
this.Session.Clear();
this.Session.Remove("ExecCaptureData");
//存储
Session["ExecCaptureData"]=dt;
BLL.PublicClass.DataSetSerializer.erroLog(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+Session.SessionID+"行号:(289)保存选中的数据\n\r");
BLL.PublicClass.DataSetSerializer.erroLog(Session["ExecCaptureTable"].ToString()+"\n\r");
BLL.PublicClass.DataSetSerializer.erroLog(dt.Rows.Count.ToString()+"\n\r");
Session["CardState"]=""; return dt;
}
catch(Exception ex)
{
return null;
}
}
#endregion //更改缓存中的数据
[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.Read)]
public bool Ajax_SaveData(string str)
{
try
{
DataTable dt=Session["ExecCaptureData"] as DataTable;
string [] arr=str.Split(',');
for(int i=0;i<dt.Rows.Count;i++)
{
if(dt.Rows[i]["GoodsID"].ToString()==arr[0])
{
dt.Rows[i]["GoodsName"]=arr[1];//名称
dt.Rows[i]["GoodsUnit"]=arr[2];//规格
dt.Rows[i]["GoodsNum"]=arr[3];//数量
dt.Rows[i]["GoodsCharacter"]=arr[4];//特征
dt.Rows[i]["Re"]=arr[5];//发还情况<br>(接收人签收)
}
}
//存储
Session["ExecCaptureData"]=dt;
BLL.PublicClass.DataSetSerializer.erroLog(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+Session.SessionID+"行号:(384)\n\r");
BLL.PublicClass.DataSetSerializer.erroLog(Session["ExecCaptureTable"].ToString()+"\n\r");
BLL.PublicClass.DataSetSerializer.erroLog(dt.Rows.Count.ToString()+"\n\r"); return true;
}
catch
{
return true;
}
}
{
try
{
int rowcount;
//读取内容中的数据
DataTable dt=Session["ExecCaptureData"] as DataTable;
BLL.PublicClass.DataSetSerializer.erroLog(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+Session.SessionID+"行号:(263)保存选中的数据\n\r");
BLL.PublicClass.DataSetSerializer.erroLog(Session["ExecCaptureTable"].ToString()+"\n\r");
BLL.PublicClass.DataSetSerializer.erroLog(dt.Rows.Count.ToString()+"\n\r");
rowcount=dt.Rows.Count;
DataRow dr=dt.NewRow();
// dr["GoodsID"]="";//主键
if(dt.Rows.Count==1)
{
dr["Num"]="1";
}
else
{
int num=int.Parse(dt.Rows[dt.Rows.Count-1]["Num"].ToString())+1;//当前最大的号加1
dr["Num"]=num.ToString();
}
dr["GoodsID"]=dr["Num"].ToString();//主键
dr["GoodsName"]="";//ProofID没赋值
dr["GoodsUnit"]="";
dr["GoodsNum"]="";
dr["GoodsCharacter"]="";
dr["Re"]="";
// dr["Menu_ID"]=""; dt.Rows.Add(dr); //存储
Session["ExecCaptureData"]=dt;
BLL.PublicClass.DataSetSerializer.erroLog(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+Session.SessionID+"行号:(289)保存选中的数据\n\r");
BLL.PublicClass.DataSetSerializer.erroLog(Session["ExecCaptureTable"].ToString()+"\n\r");
BLL.PublicClass.DataSetSerializer.erroLog(dt.Rows.Count.ToString()+"\n\r");
Session["CardState"]=""; return dt;
}
catch(Exception ex)
{
return null;
}
}
#endregion
此处取不到更新的,只能取到以前的
2.有可能是ajax缓存的问题。所以SaveData 后,你可写个函数取一下,或者在另一个页面取session中的dt的行数。
==========
还有这种事?我来试试。
{
DataTable dt;
if (Session["dt"] == null)
{
dt = new DataTable();
dt.Columns.Add("name"); }
else
{
dt = Session["dt"] as DataTable;
}
dt.Rows.Add(DateTime.Now.ToLongTimeString());
Session["dt"] = dt; } void _ShowData()
{
DataTable dt = Session["dt"] as DataTable;
Response.Write(dt.Rows.Count.ToString());
} protected void btn1_Click(object sender, EventArgs e)
{
this._AddData();
} protected void Button2_Click(object sender, EventArgs e)
{
this._ShowData();
}
2.有可能是ajax缓存的问题。所以SaveData 后,你可写个函数取一下,或者在另一个页面取session中的dt的行数。
2009-07-24 10:53:45aszmyo55v2iy0z23drlsuc45行号:(289)保存选中的数据
NoFirst
2
2009-07-24 10:53:53aszmyo55v2iy0z23drlsuc45行号:(481)
NoFirst
1
if (Session["shopping"] == null)
{
DataTable dt = ShopingCar.createShop();
dt = ShopingCar.Add(productID, goodName, 1, Convert.ToDouble(goodPrice), Convert.ToDouble(goodPrice), dt);
Session["shopping"] = dt; this.GridView1.DataSource = dt;
GridView1.DataBind();
DataTable session11 = (DataTable)Session["shopping"];
Label4.Text = Convert.ToString(ShopingCar.GetSum(session11));
}
else
{
DataTable session = (DataTable)Session["shopping"];
for (int i = 0; i < session.Rows.Count; i++)
{
if (Convert.ToInt32(session.Rows[i]["goodID"]) == productID)
{
int counta = Convert.ToInt32(session.Rows[0]["goodCount"]) + 1;
session = ShopingCar.Update(productID, counta, session);
Label4.Text = Convert.ToString(ShopingCar.GetSum(session));
GridView1.DataSource = session;
GridView1.DataBind();
DataTable session11 = (DataTable)Session["shopping"];
this.Label4.Text = (ShopingCar.GetSum(session11)).ToString();
return;
} }
session = ShopingCar.Add(productID, goodName, 1, Convert.ToDouble(goodPrice), Convert.ToDouble(goodPrice), session);
GridView1.DataSource = session;
GridView1.DataBind();
}
DataTable session1 = (DataTable)Session["shopping"];
this.Label4.Text = (ShopingCar.GetSum(session1)).ToString();
session有时候得到有时候得不到