[英]Question about programmatically generated controls:"?
public partial class Default2 : System.Web.UI.Page
{
Dictionary<int, Button> btnsDic = new Dictionary<int, Button>();
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
for (int i = 0; i < 2; i++)
{
Button newBtn = new Button();
newBtn.CommandName = i.ToString();
newBtn.Text = i.ToString();
newBtn.Command += Clicked;
btnsDic.Add(i, newBtn);
PlaceHolder p = new PlaceHolder();
PlaceHolder1.Controls.Add(newBtn);
// p.Controls.Add(newBtn);
}
}
else
{
Button dsa = new Button();
dsa.Text = "This medsa";
PlaceHolder1.Controls.Add(dsa);
}
}
void Clicked(object sender, CommandEventArgs e)
{
foreach (var item in btnsDic)
{
if (e.CommandName==item.Key.ToString())
{
Label lebl = new Label();
lebl.Text="Button number: "+e.CommandName+" was pressed";
this.Controls.Add(lebl);
}
}
}
}
为什么如果我以编程方式制作占位符,而不是以标签形式使用Web窗体上存在的占位符。回发后页面上什么都没有出现?
您正在循环调用PlaceHolder p = new PlaceHolder()。 这意味着,如果它确实起作用,则仅第二个按钮位于占位符中。 另外,您需要在页面上添加新的占位符。 因此,您需要添加一个已经放置在页面上的控件。
if (IsPostBack)
{
PlaceHolder p = new PlaceHolder();
PlaceHolder1.Controls.Add(p);
for (int i = 0; i < 2; i++)
{
Button newBtn = new Button();
newBtn.CommandName = i.ToString();
newBtn.Text = i.ToString();
newBtn.Command += Clicked;
btnsDic.Add(i, newBtn);
p.Controls.Add(newBtn);
}
}
好的,我认为您可能未正确引用占位符。 您像这样引用它:
PlaceHolder p = new PlaceHolder();
PlaceHolder1.Controls.Add(newBtn);
但也许您应该这样尝试:-
PlaceHolder PlaceHolder1 = new PlaceHolder();
PlaceHolder1.Controls.Add(newBtn);
在MSDN上查看此链接以获取更多信息http://msdn.microsoft.com/zh-cn/library/kyt0fzt1.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.