如何将数据从一个表单放入另一个表单中的列表框中

时间:2014-05-03 19:36:54

标签: c# asp.net

好的,我正在将一个C#程序改编成一个asp程序,我有一个包含一个列表框的主表单,另一个表示将新信息添加到列表框中。我可以在Application["getData"];中填写第二个表格并保留值,但是当我转到另一个页面时,我需要运行以下代码。

public void AddGig()
    {
        AddGigForm frm = new AddGigForm();

        if (Application["getData"] != null)
        {
            Application["saveData"] = Application["getData"];
            gigList.addGig(frm.GetData());


            UpdateListbox();
        }

我在gigList.addGig遇到问题,因为它返回到第二个表单上的方法GetData()。我不知道还有什么可以使用。

GetData方法:

public GigOpportunity GetData()
    {


            Application["GetData"] = new GigOpportunity
                (txtId.Text, gigDate.SelectedDate, txtVenue.Text, txtGenre.Text,
                Convert.ToDouble(txtCost.Text), Convert.ToInt32(txtCapacity.Text), chkHeadliner.Checked, txtMainAct.Text, chkEngineer.Checked);


            return new GigOpportunity(txtId.Text, gigDate.SelectedDate, txtVenue.Text, txtGenre.Text, Convert.ToDouble(txtCost.Text), Convert.ToInt32(txtCapacity.Text), chkHeadliner.Checked, txtMainAct.Text, chkEngineer.Checked);
    }

addGig方法:

public void addGig(GigOpportunity gigOpportunity)
    {
        //Make sure a gig with this id does not already exist

        foreach (GigOpportunity g in gigList)
        {
            if (g.GigId == gigOpportunity.GigId)
            {
                throw new DuplicateIdException();
            }
        }

        gigList.Add(gigOpportunity);
    }

1 个答案:

答案 0 :(得分:1)

我现在明白你的问题。你不像在窗体中那样思考。你在其他形式中声明了这些方法。当您通过分配新的Form对象来调用它时,您将无法获得内部值,因为它们在您更改页面后已被处理。

所以在你的情况下:

  if (Application["getData"] != null)
  {
        Application["saveData"] = Application["getData"];
        gigList.addGig((GigOpportunity)Application["getData"]);


        UpdateListbox();
  }

但我建议您使用Session对象而不是Application对象。 您可以阅读更多相关信息here

所以你必须这样做:

  if (Session["getData"] != null)
  {
        Session["saveData"] = Session["getData"];
        gigList.addGig((GigOpportunity)Session["getData"]);


        UpdateListbox();
  }

您不需要创建第二个表单对象AddGigForm,并且必须确保在声明为其分配会话的表单中调用方法GetData