我懷疑我的問題是圍繞着對自定義事件處理程序如何在ASP.NET中工作的理解不足。我讀過幾篇文章,但目標受衆一直在嘗試與我不同的東西。強制一個事件處理程序在每個回發中觸發一個自定義控件
我已經創建了一個UserControl,它在Init事件期間動態地放置在我的頁面上。它填充並且工作得很好,但是我在回發期間如何從數據中檢索數據,我一直在撓頭。
它實際上是一個多用戶組合框,完全使用客戶端JavaScript(我大量使用jQuery)進行操作。在控件容器元素中,我渲染一個包含所有選定項目的空DIV元素。當用戶選擇項目時,我在該容器DIV內生成包含一些標記的DIV。我在服務器端感興趣的是幾個INPUT字段的內容。
選擇項目後,呈現的HTML看起來像:當然
<div class="multiPickContainer">
<div class="multiPickItem">
<input type="text" />
<input type="hidden" />
</div>
</div>
的問題,是在客戶端生成這些選擇項目和服務器沒有任何知識他們(例如,沒有runat =「服務器」 - 它是純HTML)。
在任何帖子[回]上,我想要一個事件處理程序在我的自定義控件中觸發,使我能夠檢查此容器DIV中的元素。無論用戶是否做出選擇(控件可能已預先填充,在這種情況下,我仍然想知道其中的選擇是什麼),我希望此事件能夠觸發。
什麼我之後是這樣的:
private GenerateControl(TemplateControl page){
var control = page.LoadControl("~/MyControl.ascx") as MyControl;
control.OnPostBack += HandlePostback;
}
我可能完全偏離了軌道,這可能實際上是不可能的(或愚蠢的想法)。我能想到的唯一選擇是發出實際的ASP.NET控件並掛接內置的事件處理程序。
任何人都可以提出任何建議,或指向我討論創建自定義事件處理程序的任何好文獻?
感謝,Yads顯示出來,這是非常有幫助的,並且運行良好。我還有一個問題是確保事件處理程序(我從Request.Form中獲取值)始終觸發。我正在使用第三方控件,因此已經捕獲了TextChanged和SelectedIndexChanged事件,但這很醜陋,因爲某些用例觸發了多個事件(並且根本沒有觸發)。這與你的回答有些不相干,但是把我的東西聯繫在一起。我能以某種方式強制一個事件處理程序始終在表單發佈時調用? – 2011-02-14 00:24:11