[英]Disable Postback on button ASP.NET c#
這是我正在做的一個例子
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
}
我的問題是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);
}
頁面上只有一個空面板和一個帶有此單擊偶數處理程序的按鈕。
我也試過這個,它仍然無法正常工作。 現在清除附加到面板的初始項目。
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);
}
如果要動態地向Panel添加控件,則必須在每次回發時重新創建控件,並確保為控件分配相同的ID,以便ViewState可以填充值。 通常最好在OnInit
期間重新創建動態內容,但在某些情況下這可能很難。
我最喜歡的工具之一是DynamicControlsPlaceHolder
,因為你可以為它添加動態控件,它會自動保留它們,而不需要在頁面上進行任何額外的編碼。 只需添加控件,它將完成剩下的工作。
這是鏈接:
http://www.denisbauer.com/Home/DynamicControlsPlaceholder
至於阻止按鈕執行回發,請使用OnClientClick
並返回false。
OnClientClick="return false;"
你可以用
<asp:LinkButton OnClientClick="javascript:addItemsToPanel();return false;"
因此使用javascript函數來添加它們。 這就是我解決這個問題的方法。
你也可以試試這個:
Page Load
{
if (!this.IsPostBack) // to avoid reloading your control on postback
{
//Adds items to a panel (not an updatepanel just a normal panel control)
}
}
你可以這樣做......
ASPX code:
<asp:LinkButton ID="someID" runat="server" Text="clicky"></asp:LinkButton>
代碼背后:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
someID.Attributes.Add("onClick", "return false;");
}
}
呈現為HTML的是:
<a onclick="return false;" id="someID" href="javascript:__doPostBack('someID','')">clicky</a>
將asp:Button更改為asp:LinkButton解決了我的問題。
你是對的,你必須在PostBack后將新項添加到Panel。 這就是.NET管道的本質。
如果使用數據綁定控件(如Repeater)來顯示面板內容,則按鈕單擊處理程序只需重新綁定控件即可正常運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.