从DevExpress在单个ASP.NET表单中的事件之间传递对象列表

时间:2013-08-09 02:41:04

标签: c# asp.net events devexpress

所以我有一个用c#编码的网站,当我加载某个表单时,它会从数据库中加载几个记录并填充网格视图。一个事件是按钮单击以显示重新发送的按钮。此方法获取所选网格中的所有项目并重新发送它们。如果所选项目不遵循一组特定规则,则会弹出另一个表单并说明必须移动记录以重新发送。用户可以选择是,然后移动记录,或者选择否,继续他们的业务。

我需要将重新发送单击的所选项目列表传递给单独表单上的是单击,唯一的问题是弹出窗口和网格在技术上是相同的形式。我可以加载它和所有爵士乐,但加载事件和所有弹出窗口的代码都与网格位于相同的form.cs中。我无法让事件处理程序工作。我通常创建一个自定义EventArgs类并将值存储在那里,但由于这两种形式在技术上是相同的,我不确定如何正确传输信息。当我尝试从我的yes click事件访问所选值列表时,我不断收到空引用异常。

有关我应该做什么的任何建议?属性和变量没有用,这让我相信它们在技术上是两种不同的形式,我只是不知道如何在这种情况下使用它们。

如果您需要代码或想要澄清任何内容,请告诉我。

1 个答案:

答案 0 :(得分:0)

将所选项目列表存储在Session缓存中,如下所示:

protected void buttonResend_Click(object sender, EventArgs e)
{
    List<Items> listOfSelectedItems = new List<Items>();
    // Put logic here for populating listOfSelectedItems

    // Store listOfSelectedItems in Session cache
    Session["SelectedItems"] = listOfSelectedItems;
}

注意:我编写了存储在Items中的List<T>类;很明显,无论您拥有所选项目的班级都可以使用,或者只是string s。

列表

现在,在“其他”页面中,您可以检索listOfSelectedItems中的Session,如下所示:

if(Session["SelectedItems"] != null)
{
    List<Items> listOfItems = Session["SelectedItems"] as List<Items>;

    // Put logic here to work with list of selected items
}