在同一个类中的方法之间共享对象(使用回发)

时间:2010-11-19 11:10:22

标签: c# asp.net

我有一个带有许多方法的用户控件。我还有一个数据集对象,我正在填写一个方法,但我还需要访问另一个方法中的相同数据集(及其中的数据)。

当我点击某个按钮时,我从某个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       
}

4 个答案:

答案 0 :(得分:1)

您可以使用会话变量,您可以将数据集存储在会话变量中并访问数据util会话过期

答案 1 :(得分:1)

答案 2 :(得分:1)

如果所有系统用户的数据相同(无论会话如何),请将数据集设为静态或存储在Application对象中。

否则,如果它是每个会话,则存储在Session对象中,但不要忘记在不再需要它之后进行清理。

在我看来,将它存储在视图状态是不明智的,因为这会产生更多的额外流量,并会通过序列化和反序列化来减慢系统速度。

答案 3 :(得分:0)

您何时填充数据集?你不能再填一次吗?它应该在Init中填充用户控件,前提是它不需要任何回发信息来检索数据。