簡體   English   中英

通過內容頁面上的DropDownList更改動態控件

[英]Changing Dynamic Controls via DropDownList on Content Page

問題 :具有帶有UpdatePanel和占位符的向導控制的內容頁面。 在UpdatePanel上方是一個DropDownList。 當用戶更改下拉列表中的選擇時,我需要在下拉列表下方顯示不同的輸入控件。 當用戶在向導控件上單擊“下一步”時,我還需要能夠從這些動態控件中獲取數據。

我知道所有動態控件都必須在OnInit方法中創建,以便在回發期間從這些控件中獲取數據。 但是,當觸發下拉列表的SelectedIndexChanged事件時,將調用OnInit方法...,然后調用PageLoad ...,最后將調用SelectedIndexChanged事件的處理程序。 直到調用OnInit&PageLoad方法之后,ViewState才被還原,因此無法知道調用OnInit時用戶在列表框中選擇的內容……這正是我需要的時間創建動態控件。

那么...您如何解決這個問題? 您是否只需要使用JavaScript編寫整個頁面或大部分頁面?

提前致謝。

您還可以使用asp:hiddenfield並將值設置為您手動創建的case var。 然后在頂部運行一個小的jQuery腳本來查看

$(document).on("change", "#ddlSelector", setControls);

然后只需創建一個函數,例如:

function setControls(event) { 
    event.preventDefault();
    var selector = hiddenfield.val();
}

那么可以通過獲取標簽來完成任何要顯示/隱藏的項目:

$("#elementName").css("display", "inline"); 

或顯示,沒有一個隱藏。 我之所以在工作中使用它,是因為有時您需要更改而不觸發回發,但是當他們使用表單時仍然需要收集數據。

通常,出於代碼強度和安全性考慮,我通常避免在許多事件中使用jQuery,但是使用jQuery有時可以更輕松地進行DOM元素操作。

對於這種類型的需求,我傾向於使用一種舊式的方法。 我會在更新面板中編寫所有需要的控件,並將它們的Visible屬性設置為false。 然后,在回發時讀取下拉菜單的狀態並將適當的控件的Visible屬性設置為true。 這樣就沒有“動態”控件,並且由於不呈現Visible屬性為false的控件,因此只有在用戶看到它們之前,才下載它們。

暫無
暫無

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

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