这是我正在做的一个例子
Page Load
{
//Adds items to a panel (not an updatepanel just a normal panel control)
}
protected void btnNexMod_Click(object sender, EventArgs e)
{
// Calls DoWork() and Appends more items to the same panel
}
Run Code Online (Sandbox Code Playgroud)
我的问题是asp:按钮正在进行回发以及调用 DoWork()
因此,重新调用我的页面加载,重新初始化我的面板:(
我希望我添加到面板中的项目留在那里!
所有的帮助表示赞赏,而不是寻找你的答案.任何步骤都表示赞赏谢谢!
这是我的问题的一个确切示例.
protected void Page_Load(object sender, EventArgs e)
{
CheckBox chkbox = new CheckBox();
chkbox.Text = "hey";
chkbox.ID = "chk" + "hey";
// Add our checkbox to the panel
Panel1.Controls.Add(chkbox);
}
protected void Button1_Click(object sender, EventArgs e)
{
CheckBox chkbox = new CheckBox();
chkbox.Text = "hey";
chkbox.ID = "chk" + "hey";
// Add our checkbox to the panel
Panel1.Controls.Add(chkbox);
}
Run Code Online (Sandbox Code Playgroud)
页面上只有一个空面板和一个带有此单击偶数处理程序的按钮.
我也试过这个,它仍然无法正常工作.现在清除附加到面板的初始项目.
if (!Page.IsPostBack) // to avoid reloading your control on postback
{
CheckBox chkbox = new CheckBox();
chkbox.Text = "Initial";
chkbox.ID = "chk" + "Initial";
// Add our checkbox to the panel
Panel1.Controls.Add(chkbox);
}
Run Code Online (Sandbox Code Playgroud)
Jam*_*son 10
如果要动态地向Panel添加控件,则必须在每次回发时重新创建控件,并确保为控件分配相同的ID,以便ViewState可以填充值.通常最好在期间重新创建动态内容OnInit
,但在某些情况下这可能很难.
我最喜欢的工具之一是DynamicControlsPlaceHolder
,因为你可以为它添加动态控件,它会自动保留它们,而不需要在页面上进行任何额外的编码.只需添加控件,它将完成剩下的工作.
这是链接:http:
//www.denisbauer.com/Home/DynamicControlsPlaceholder
至于阻止按钮执行回发,请使用OnClientClick
并返回false.
OnClientClick="return false;"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
68431 次 |
最近记录: |