大致代码如下:
protected void ddlRootClass_SelectedIndexChanged(object sender, EventArgs e)
{
CreateCategoryControls(((DropDownList)sender).SelectedValue);
}
private void CreateCategoryControls(string rootId)
{
IList<Category> categorys = new List<Category>();
CategoryManager categoryManager = new CategoryManager();
categorys = categoryManager.GetCategoryChildrenByRoodId(rootId);
if (categorys.Count <= 0)
return;
DropDownList ddl = new DropDownList();
ddl.ID = "ddlChlidClass" + rootId;
ddl.DataTextField = "categoryName";
ddl.DataValueField = "id";
ddl.DataSource = categorys;
ddl.DataBind();
ddl.AutoPostBack = true;
ddl.SelectedIndexChanged += new EventHandler(ddlRootClass_SelectedIndexChanged);
this.phCategorys.Controls.Add(ddl);
}
遇到的问题是生成的控件在选择项变时,即AutoPostBack 时,控件不在存在, 因为PlaceHolder生成的控件无法保持在下一次Page_Load事件来临之前,通常的做法是在override void OnInit(EventArgs e)里再创建,以保持该控件有效性,但是,我的控件是在事件中生成的,有没有办法让他在postback后继续保持有效性呢?或者有没有其他办法实现这个功能?甚至不用创建控件的方法?
12 个解决方案
#1
用JS在客户端做
#2
js做应该可以,可能会很麻烦。
#3
PlaceHolder本身不能保存ViewState
可以参考
http://www.cnblogs.com/mail-ricklee/archive/2008/03/06/1093260.html
中NickLee.Web.UI.dll
中
NickLee:DynamicControlsPlaceholder
可以参考
http://www.cnblogs.com/mail-ricklee/archive/2008/03/06/1093260.html
中NickLee.Web.UI.dll
中
NickLee:DynamicControlsPlaceholder
#4
有一个第三方的placeholder可以
搜索 Debauer Placeholder
搜索 Debauer Placeholder
#5
用javascript是个很不错的选择!
#6
加个 if(!Page.IsPostBack)
{
...............
}
{
...............
}
#7
用js怎么做呢?有几层是不确定的啊,js能生成控件吗?
#8
up
#9
各位帮帮忙啊!
真的不行的话,我就改用treeview。。。虽然用treeview选择分类有点恶心。。。
真的不行的话,我就改用treeview。。。虽然用treeview选择分类有点恶心。。。
#10
js,别的都不太靠普
#11
JS要怎么做啊?拜托帮写一下示例
#12
还是没有人帮忙吗??
#1
用JS在客户端做
#2
js做应该可以,可能会很麻烦。
#3
PlaceHolder本身不能保存ViewState
可以参考
http://www.cnblogs.com/mail-ricklee/archive/2008/03/06/1093260.html
中NickLee.Web.UI.dll
中
NickLee:DynamicControlsPlaceholder
可以参考
http://www.cnblogs.com/mail-ricklee/archive/2008/03/06/1093260.html
中NickLee.Web.UI.dll
中
NickLee:DynamicControlsPlaceholder
#4
有一个第三方的placeholder可以
搜索 Debauer Placeholder
搜索 Debauer Placeholder
#5
用javascript是个很不错的选择!
#6
加个 if(!Page.IsPostBack)
{
...............
}
{
...............
}
#7
用js怎么做呢?有几层是不确定的啊,js能生成控件吗?
#8
up
#9
各位帮帮忙啊!
真的不行的话,我就改用treeview。。。虽然用treeview选择分类有点恶心。。。
真的不行的话,我就改用treeview。。。虽然用treeview选择分类有点恶心。。。
#10
js,别的都不太靠普
#11
JS要怎么做啊?拜托帮写一下示例
#12
还是没有人帮忙吗??