我有一个带有许多方法的用户控件。我还有一个数据集对象,我正在填写一个方法,但我还需要访问另一个方法中的相同数据集(及其中的数据)。
当我点击某个按钮时,我从某个xml填充数据集。然后将数据集中的数据绑定到列表框控件。当有人在列表控件中选择一个项目时(我将autopostback设置为true),然后触发另一个方法,这是我需要访问数据集中的数据的方法,但当我检查即时窗口时,它告诉我数据集设置为null。
我哪里错了?
已修改为添加了psuedocode
//Dataset
DataSet dsAddress;
protected void Page_Load(object sender, EventArgs e)
{
// Nothing happens to DataSet here
}
protected void btnPostCode_Click(object sender, EventArgs e)
{
try
{
// Dataset has data added here
}
catch (Exception ex)
{
lblError.Text = ex.Message.ToString();
}
if (!DataHelper.DataSourceIsEmpty(dsAddress))
{
//Dataset bound to listbox here
}
}
protected void lstAddressDropdown_SelectedIndexChanged(object sender, EventArgs e)
{
// Need to access dataset here
}
答案 0 :(得分:1)
您可以使用会话变量,您可以将数据集存储在会话变量中并访问数据util会话过期
答案 1 :(得分:1)
您必须将数据集保存在视图状态或会话变量中。
看看@
http://msdn.microsoft.com/en-us/library/ms972976.aspx
http://msdn.microsoft.com/en-us/library/ms227551(VS.80).aspx
答案 2 :(得分:1)
如果所有系统用户的数据相同(无论会话如何),请将数据集设为静态或存储在Application对象中。
否则,如果它是每个会话,则存储在Session对象中,但不要忘记在不再需要它之后进行清理。
在我看来,将它存储在视图状态是不明智的,因为这会产生更多的额外流量,并会通过序列化和反序列化来减慢系统速度。
答案 3 :(得分:0)
您何时填充数据集?你不能再填一次吗?它应该在Init中填充用户控件,前提是它不需要任何回发信息来检索数据。