我是一位经验丰富的程序员,只是一位新秀爱好者。
我有一个webForm,我将项目添加到下拉列表中。
还有另一个包含另一个下拉列表的webform,我希望第二个“ddl”显示我添加到“first 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();
我无法对ddls做同样的事情,因为与DataSet和数据表不同,ddl是从设计器视图创建的,当我试图在webForm的“代码隐藏”中声明它们时“原始” ddl存在我得到关于被复制的对象的错误,这是有道理的。
感谢您的时间
@Erkaner
在第一个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();
}
再次感谢!
答案 0 :(得分:1)
为什么不使用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;
如果在下拉列表中存储更复杂的对象,我将定义一个表示复杂对象的类,并仍然使用上述方法(List<ObjectType>
)。