簡體   English   中英

在asp.net上使用ajax創建動態控件

[英]creating dynamic controls using ajax on asp.net

我的頁面上有添加和刪除按鈕。 “添加”按鈕會在我的頁面上的新行中添加一個復選框,兩個文本框和一個下拉列表。 刪除按鈕將刪除它們。 按照Joe Stagner的例子,我很好地運行了這個。

問題:動態創建的控件都需要在選中時(對於復選框)觸發相同的事件,也用於選定的索引更改(對於下拉列表)。

我在創建對象時嘗試添加事件處理程序,但它似乎沒有觸發?

我想你可能會遇到這樣一個事實:你的頁面在每個頁面發布時都被完全重新創建 - 實際上頁面必須復制頁面上的控件,然后才能嘗試向它們提供回發(和事件)。 我認為您可能需要做的是向page_load添加代碼,該代碼將重新創建動態創建的控件,使用與它們相同的ID,並注冊事件處理程序。

聽起來你有一個頁面生命周期問題。

對於動態創建的觸發事件的控件,您應該在頁面的PreInit事件中創建它們。

這是Asp.net頁面生命周期的備忘單鏈接。

你需要以某種方式[session,viewstate等]為每個頁面加載持久保存動態創建的控件。 在preInit函數中的每個頁面加載上使用委托重新創建動態控件並重新綁定事件。

是的,就像所說的一樣,這是生命周期問題。 當您動態加載用戶控件時,應始終執行以下操作。

  • 為每個用戶控件分配唯一的ID。
  • 重新加載Page_Load或Page_Init Events上的用戶控件。

並且為了讓我更容易,我建議將加載抽象為你將從之前提到的Page_Load和Page_Init調用的函數,這個函數將檢查是否加載了目標用戶控件,並將為你再次加載它,為此,您在Session或viewstate中存儲加載的用戶控件ID。

希望這可以幫助。

如果你想在沒有自動回發的情況下這樣做,你可以刪除自動回發和拋出和ASP按鈕。 任何runat服務器都應該啟動動態事件處理程序。

暫無
暫無

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

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