簡體   English   中英

在按鈕ASP.NET c#上禁用回發

[英]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:LinkBut​​ton解決了我的問題。

你是對的,你必須在PostBack后將新項添加到Panel。 這就是.NET管道的本質。

如果使用數據綁定控件(如Repeater)來顯示面板內容,則按鈕單擊處理程序只需重新綁定控件即可正常運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM