private DataSet _Data;
protected DataSet Data
{
get
{
if (this._Data == null)
{
this._Data = new DataSet();
this.Session.Add(SESSION_DATA_KEY, this._Data);
}
return this._Data;
}
}当第一次加载页面时取Data里数据,页面显示正常,Data里有数据.
然后点击分页时Data变成空的了,分页事件如下:
protected void uwdSbyz_PageIndexChanged(object sender, Infragistics.WebUI.UltraWebGrid.PageEventArgs e)
{
this.uwdSbyz.DisplayLayout.Pager.CurrentPageIndex = e.NewPageIndex;
uwdSbyz.DataSource = this.Data.Tables[tableName].DefaultView;
uwdSbyz.DisplayLayout.LoadOnDemand = LoadOnDemand.Automatic;
this.uwdSbyz.DataBind();
pageChanged = true;
}uwdSbyz.DataSource = this.Data.Tables[tableName].DefaultView;
这句里 Data是空的
请问有什么办法,让Data的数据一直存在(除非刻意去清空它)
protected DataSet Data
{
get
{
if (this._Data == null)
{
this._Data = new DataSet();
this.Session.Add(SESSION_DATA_KEY, this._Data);
}
return this._Data;
}
}当第一次加载页面时取Data里数据,页面显示正常,Data里有数据.
然后点击分页时Data变成空的了,分页事件如下:
protected void uwdSbyz_PageIndexChanged(object sender, Infragistics.WebUI.UltraWebGrid.PageEventArgs e)
{
this.uwdSbyz.DisplayLayout.Pager.CurrentPageIndex = e.NewPageIndex;
uwdSbyz.DataSource = this.Data.Tables[tableName].DefaultView;
uwdSbyz.DisplayLayout.LoadOnDemand = LoadOnDemand.Automatic;
this.uwdSbyz.DataBind();
pageChanged = true;
}uwdSbyz.DataSource = this.Data.Tables[tableName].DefaultView;
这句里 Data是空的
请问有什么办法,让Data的数据一直存在(除非刻意去清空它)
解决方案 »
- C#怎么自定义控件?
- 一段字符串截取代码,高手帮帮忙
- winform中,一个datagrid 绑定了父子表,当更新子表的记录后,datagrid里数据居然不变?
- datagridview 控件的问题 做数据库系统的应该都遇到过吧
- 同志们,怎么样才能用.NET把excel的数据导入到sql server数据库啊?
- 高份求教代码:如何在上传时将文本文件的空行去除掉?
- 如果我用C#读取文件的时候锁定文件?其他进程在访问这个文件是提示错误还是被堵塞?
- ==500分==分享:C#常用类库
- ”automation服务器不能创建对象“错误提示怎样解决
- 我要进行byte类型的异或,靠c#居然^只有bool、int好用,我怎么办啊?
- C#2005经典
- C#新手
其实这些代码我原来是模仿别人的写的,自己也不大懂,原来测试可以通过
后来修改了一个用户的取用方法,就出现了这种情况!
protected DataSet Data
{
get
{
if (this._Data == null)
{
this._Data = new DataSet(); // 这句的问题
this.Session.Add(SESSION_DATA_KEY, this._Data);
}
return this._Data;
}
}
if (Session["ds"]==null) //#####################保证过期后可以重新调用
{
sqlDataAdapter1.Fill (dataSet11);
dg.DataSource=dataSet11.Tables[0];
dg.DataBind();
this.Session["ds"]=dataSet11; }
在添加按钮中执行如下语句:
dataSet11=(DataSet1)(this.Session["ds"]);
DataRow dr=dataSet11.Tables[0].NewRow(); dataSet11.Tables[0].Rows.Add (dr);
dg.DataSource=dataSet11.Tables[0];
dg.DataBind();
首先是定义:private DataSet _Data;
protected DataSet Data
{
get
{
if (this._Data == null)
{
this._Data = new DataSet();
this.Session.Add(SESSION_DATA_KEY, this._Data);
}
return this._Data;
}
}然后写了个方法赋值
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
//绑定数据
uwdSbyz.DisplayLayout.AllowUpdateDefault = Infragistics.WebUI.UltraWebGrid.AllowUpdate.Yes;
this.InitialDataSet();
uwdSbyz.DataSource = this.Data.Tables[tableName].DefaultView;
uwdSbyz.DataBind();
} protected void InitialDataSet()
{
........
}
{
if (this._Data == null)//回发之后this._Data就是null了
{
this._Data = new DataSet();//重新初始化,但肯定是没有数据的
this.Session.Add(SESSION_DATA_KEY, this._Data);//再次将没有数据的DataSet放到Session
}
return this._Data;
} 所以你分页之后能查出来数据才有鬼呢
2、把字段_Data去掉,直接使用Session存储值:protected DataSet Data
{
get
{
return Session[SESSION_DATA_KEY] as DataSet;
}
}
protected void Page_Load(object sender, EventArgs e)//Page_Load不变
{
if (!this.IsPostBack)
{
//绑定数据
uwdSbyz.DisplayLayout.AllowUpdateDefault = Infragistics.WebUI.UltraWebGrid.AllowUpdate.Yes;
this.InitialDataSet();
uwdSbyz.DataSource = this.Data.Tables[tableName].DefaultView;
uwdSbyz.DataBind();
}
protected void InitialDataSet()//InitialDataset中把原来的_Data换成Session[SESSION_DATA_KEY]
{
........
}
{
根据条件获得sql
PublicDbWeb.PopulateDataSet(ref Session[SESSION_DATA_KEY], tableName, pkNum, pkColumns, geSql);
}
其中PublicDbWeb.PopulateDataSet是一个公共方法
public static void PopulateDataSet(ref DataSet data,string tableName,int pkNum,string[] pkColumns,string setSql)
{
Database db = DatabaseFactory.CreateDatabase();
DbConnection connection = db.CreateConnection(); DbDataAdapter adapter = db.GetDataAdapter(); adapter.SelectCommand = db.DbProviderFactory.CreateCommand();
adapter.SelectCommand.Connection = connection;
adapter.SelectCommand.CommandText = setSql; adapter.Fill(data, tableName);
if (pkNum > 0)
{
DataColumn[] geColumns = new DataColumn[pkNum];
for (int i = 0; i < pkNum; i++)
{
geColumns[i] = data.Tables[tableName].Columns[pkColumns[i]];
}
data.Tables[tableName].PrimaryKey = geColumns;
}
}
protected void InitialDataSet()
{
DataSet ds = new DataSet();
PublicDbWeb.PopulateDataSet(ref ds, tableName, pkNum, pkColumns, geSql);
Session[SESSION_DATA_KEY] = ds;
}
我前头有这么一个自定义变量Session[SESSION_DATA_KEY]
如下:
DataSet _Data;
const string SESSION_DATA_KEY = "SbyzDbUpdating_Dataset";
protected DataSet Data
{
get
{
if (_Data == null)
{
_Data = new DataSet();
this.Session.Add(SESSION_DATA_KEY, _Data);
}
return _Data;
}
}您有QQ么,我的3378582,我还有个问题要问,你看能不能远程在我机器上我给你演示下,你帮忙解决下.
我前头有这么一个自定义变量Session[SESSION_DATA_KEY]
如下:
DataSet _Data;
const string SESSION_DATA_KEY = "SbyzDbUpdating_Dataset";
protected DataSet Data
{
get
{
if (_Data == null)
{
_Data = new DataSet();
this.Session.Add(SESSION_DATA_KEY, _Data);
}
return _Data;
}
}您有QQ么,我的3378582,我还有个问题要问,你看能不能远程在我机器上我给你演示下,你帮忙解决下.
我前头有这么一个自定义变量Session[SESSION_DATA_KEY]
如下:
DataSet _Data;
const string SESSION_DATA_KEY = "SbyzDbUpdating_Dataset";
protected DataSet Data
{
get
{
if (_Data == null)
{
_Data = new DataSet();
this.Session.Add(SESSION_DATA_KEY, _Data);
}
return _Data;
}
}您有QQ么,我的3378582,我还有个问题要问,你看能不能远程在我机器上我给你演示下,你帮忙解决下.
这样改protected DataSet Data
{
get
{
if (this._Data == null)
{
this._Data = Session[SESSION_DATA_KEY] as DataSet;
}
return this._Data;
}
}
if (!this.IsPostBack)
{
//绑定数据
uwdSbyz.DisplayLayout.AllowUpdateDefault = Infragistics.WebUI.UltraWebGrid.AllowUpdate.Yes;
this.InitialDataSet();
Session[SESSION_DATA_KEY]=Data ;
uwdSbyz.DataSource = this.Data.Tables[tableName].DefaultView;
uwdSbyz.DataBind();
}this.InitialDataSet();
这个方法用你 原先的就行
private static DataSet _Data;
按照你的方法修改后,有个函数出错,如下 #region 重写OnInit脚本
/// <summary>
/// 重写OnInit脚本
/// </summary>
/// <param name="e"></param>
protected override void OnInit(EventArgs e)
{
this.Data.Locale = new System.Globalization.CultureInfo("en-US");
base.OnInit(e);
this.uwdSbyz.InitializeLayout += new Infragistics.WebUI.UltraWebGrid.InitializeLayoutEventHandler(this.uwdSbyz_InitializeLayout);
this.uwdSbyz.UpdateCellBatch += new Infragistics.WebUI.UltraWebGrid.UpdateCellBatchEventHandler(this.uwdSbyz_UpdateCell);
this.uwdSbyz.DeleteRowBatch += new Infragistics.WebUI.UltraWebGrid.DeleteRowBatchEventHandler(this.uwdSbyz_DeleteRow);
this.uwdSbyz.PageIndexChanged += new Infragistics.WebUI.UltraWebGrid.PageIndexChangedEventHandler(this.uwdSbyz_PageIndexChanged);
}
#endregion
代码如下:
protected DataSet Data
{
get
{
if (ViewState["DATA_KEY"]==null)
{
return null;
}
return ViewState["DATA_KEY"] as DataSet;
}
set
{
ViewState["DATA_KEY"]=value;
}
}
初始化的时候对Data赋值,用属性来访问Session或ViewState