请帮忙,placeholder动态加载控件与JQuery回发

moonlightme 2011-07-25 02:56:47
流程如下: 我在一个服务器控件的事件中动态向placeholder中添加了一些控件,之后使用jquery将整个form回发给服务器. 此时我在服务器端获取不到placeholder中的任何一个控件. 其他页面上原本有的控件可以获取.
注: 动态加载控件后,页面源代码中可以看到.只是post回服务器placeholder.controls.count=0了

江湖救急...请帮忙
...全文
175 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonlightme 2011-07-26
  • 打赏
  • 举报
回复
谢谢回复, 我找到问题所在了. 我的控件加载事件在pageload事件之后,所有再次post回以后获取不到. 给个辛苦分~
moonlightme 2011-07-26
  • 打赏
  • 举报
回复
你看 用个简单的方法. 我在一个按钮里向一个panel中动态添加了1个控件. 用另外一个按钮调用jquery.ajaxSubmit() post了一个form回去. 在服务器端接受不到panel中的任何控件
moonlightme 2011-07-26
  • 打赏
  • 举报
回复
其实我还是没明白这个添加控件和我获取有什么关系.. 我只是在添加完成以后, 用jquery post回服务器以后获取不到了,不是添加不进去..
  • 打赏
  • 举报
回复
子页就更好办了啊,你直接添加到 ContentPlaceHolder里面不就好了(你尽管把它也当成一个特殊一点的Holder就是了)
建议你直接在ASPX里放一个空的PlaceHolder设置Visiable=false
后台要用时再Visiable=true,然后往里面添加子控件
moonlightme 2011-07-25
  • 打赏
  • 举报
回复
額 可是我当前页面是在母版页里面的, 没有form.. 这个怎么办
  • 打赏
  • 举报
回复
form1.Controls.Add(你的PlaceHolder);
  • 打赏
  • 举报
回复

protected void Page_Load(object sender, EventArgs e)
{
var pnl1 = new PlaceHolder() { ID = "ph1" };
form1.Controls.Add(pnl1);
for (int i = 0; i < 10; i++)
pnl1.Controls.Add(new TextBox() { ID = "txt" + i, Text = i.ToString() });

}

protected void btnAdd_Click(object sender, EventArgs e)
{
(form1.FindControl("ph1") as PlaceHolder).Controls.Cast<Control>().ToList().ForEach(
c =>
{
Response.Write((c as TextBox).Text + ", ");
});

}
moonlightme 2011-07-25
  • 打赏
  • 举报
回复
額 UniqueID是做什么的?
那么按照目前的流程怎么样才能实现我从后台可以获取到jquery post回去的这一堆控件呢.难道用request.form么
  • 打赏
  • 举报
回复
PlaceHolder本身并不会写入Html中的,Panel则会变为一个div
控件视图是由ViewState保持的
  • 打赏
  • 举报
回复
有没有给PlaceHolder一个UniqueID?
Select2 是当前仓库(`se/select2`)中基于 jQuery 的 `