在不同 webForms 的下拉列表之间传输项目

Transfer items between drop-down lists in different webForms

我是一个没有经验的程序员,只是一个菜鸟爱好者。

我有一个 webForm,我可以在其中将项目添加到下拉列表中。

还有另一个包含另一个下拉列表的网络表单,我希望第二个 "ddl" 显示我添加到 "first ddl" 的项目。

在 public 属性没有成功之后,我试图以最直接的方式完成这个:

在 designer.cs 中将第一个 "ddl" 从受保护的全局更改为 public。

在我写的第二个 webForm 上:

 WebForm3 wf_ConfigurationPage = new WebForm3();

以及包含这些行的简短函数:

ddl_ingenieros.DataSource = wf_ConfigurationPage.ddl_Engineers;
ddl_ingenieros.DataBind();

我正在从 PageLoad 调用该函数,但不幸的是 "ddl" 没有显示其 "DataSource ddl" 中的项目。

此外,当我切换页面时,我添加到原始 "ddl" 的项目就消失了。

你能帮我解决这两个问题吗?

我设法为 gridview 完成了类似的操作,如下所示:

在原始gridview所在的webform上:

static DataSet DS;
static DataTable tableRequests;

/*  -------------- Public Properties ---------------- */

public DataSet currentList //Allows access from other pages.
{
    get {
        return DS;
    }
}

public DataTable currentTable {
    get {
        return tableRequests;
    }
}

在第二个 webForm 上,我想显示 gridview:

WebForm1 wf_ActiveReq = new WebForm1();

然后是我从 PageLoad 调用的一个简短函数,其中包含以下几行:

gv_results.DataSource = wf_ActiveReq.currentList;
gv_results.DataBind();

我无法对 ddls 做同样的事情,因为与数据集和数据 Table 不同,ddl 是从设计器视图创建的,当我试图在 "code behind" 中声明它们时"original" ddl 存在的 webForm 我收到关于对象重复的错误,这是有道理的。

感谢您的宝贵时间

@尔卡纳

在第一个网络表单中:

static List<string> myItems = new List<string>();


    protected void btn_add_Click(object sender, EventArgs e)
    {

        if (Session["myItems"] != null)
        {
            myItems = (List<string>) Session["myItems"];

        }
        myItems.Add(txt_newAdmin.Text);
        ddl_Engineers.DataSource = myItems;
        ddl_Engineers.DataBind();
        txt_newAdmin.Text = ""; 
    }

在第二个 webForm 中,我编写了一个从 pageLoad 调用的函数:

private void pull_engineersList()
    {

        ddl_ingenieros.DataSource = Session["myItems"];
        ddl_ingenieros.DataBind();            
    }

再次感谢!

为什么不使用 Session :

第一页:

Session["myddlstore"] = myFirstDDL.DataSource;

在第二页

mySecondDDL.DataSource = Session["myddlstore"];
mySecondDDL.DataBind();

更新

如果下拉列表项是由用户添加的,那么您可以在 按钮单击 中实现类似的操作,将项添加到下拉列表:

  List<string> myitems = new List<string> ();
  if(Session["myitems"] != null)
  {
      myitems = (List<string>) Session["myitems"];
  }

  myitems.Add(txt_NewItem.Text);

  myFirstDDL.DataSource = myitems;
  myFirstDDL.DataBind();

并且,类似地。在第二页

 mySecondDDL.DataSource = Session["myitems"];
 mySecondDDL.DataBind();
 Session["myitems"] = myitems;

如果你在下拉列表中存储一个更复杂的对象,我会定义一个代表复杂对象的class,并且仍然使用上面描述的方法(List<ObjectType>)。