【发布时间】:2015-04-12 03:59:30
【问题描述】:
我不是一个经验丰富的程序员,只是一个菜鸟爱好者。
我有一个 webForm,可以在其中将项目添加到下拉列表中。
还有另一个包含另一个下拉列表的网络表单,我希望第二个“ddl”显示我添加到“第一个 ddl”的项目。
在公共属性没有成功后,我试图以最直接的方式完成:
在 Designer.cs 中将第一个“ddl”从受保护的全局更改为公共。
在我写的第二个 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();
我无法对 ddl 做同样的事情,因为与 DataSet 和 Data Table 不同,当我尝试在 webForm 的“背后代码”中声明它们时,ddl 是从设计器视图创建的,其中“原始” 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();
}
再次感谢!
【问题讨论】:
-
为什么不用数据库来维护这种工作
-
嗨 - 这只是我必须展示的一个原型,然后只需要运行时的值。
-
此外页面是无状态的。你不能指望他会在被销毁后保留他的数据。
-
您可以使用 cookie、查询字符串、本地存储、会话存储等将数据从一个页面传递到另一个页面