在不同 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>
)。
我是一个没有经验的程序员,只是一个菜鸟爱好者。
我有一个 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>
)。