2011-02-11 65 views
2

我懷疑我的問題是圍繞着對自定義事件處理程序如何在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控件並掛接內置的事件處理程序。

任何人都可以提出任何建議,或指向我討論創建自定義事件處理程序的任何好文獻?

回答

2

如果你給你的inputs name屬性,該值將在Request.Form

+0

感謝,Yads顯示出來,這是非常有幫助的,並且運行良好。我還有一個問題是確保事件處理程序(我從Request.Form中獲取值)始終觸發。我正在使用第三方控件,因此已經捕獲了TextChanged和SelectedIndexChanged事件,但這很醜陋,因爲某些用例觸發了多個事件(並且根本沒有觸發)。這與你的回答有些不相干,但是把我的東西聯繫在一起。我能以某種方式強制一個事件處理程序始終在表單發佈時調用? – 2011-02-14 00:24:11

相關問題