select2.js 다중 선택이 있습니다. 이 다중 선택에서 선택된 값은 포스트 백 이후에 다른 컨트롤을 생성합니다. Select2.js은 다시 게시를 통해 그 내용을 유지하도록 설계, 그래서 그것을 작동하도록 JQuery와의 비트를 추가되지 않습니다 : 이것은 다시 게시를 통해 .select2의 값을 유지하는 잘 작동페이지 수명주기 - 컨트롤에 Page_Init()에 값이 없습니다. Page_load()가 너무 늦었습니다.
<select id="selectParameters" multiple="true" runat="server" clientidmode ="Static" style="width:100%;" class="textBox;">
</select>
<asp:hiddenField ID="hdnParameters" runat="server" ClientIDMode="Static" />
<script type="text/javascript">
$(document).ready(function() {
$("#selectParameters").select2({
placeholder: "Select parameter(s)"
});
if ($("#hdnParameters").val != "") {
// This is not a postback - Move all currently selected items into the hidden selection
$("#hdnParameters").val($("#selectParameters").val());
} else {
// This is a postback - Use the hidden selection to populate the currently selected items
$("#selectParameters").select2("val", $("#hdnParameters").val());
}
$("#selectParameters").on("select2:select", function (e) {
// Selection was updated - Move all currently selected items into the hidden selection
$("#hdnParameters").val($("#selectParameters").val());
});
$("#selectParameters").on("select2:unselect", function (e) {
// Selection was updated - Move all currently selected items into the hidden selection
$("#hdnParameters").val($("#selectParameters").val());
});
$("#btnAllParameters").click(function(){
// Select all
$("#selectParameters > option").prop("selected", "selected");
$("#selectParameters").trigger("change");
$("#hdnParameters").val($("#selectParameters").val());
return false;
});
$("#btnNoParameters").click(function() {
// De-select all
$("#selectParameters > option").prop("selected", "");
$("#selectParameters").trigger("change");
$("#hdnParameters").val($("#selectParameters").val());
return false;
});
});
</script>
하고, select2는 page_load 중에 올바르게 다시 채워집니다.
코드의 다른 곳에서 findControl()을 사용하여 동적으로 생성 된 컨트롤 (select2 컨트롤의 내용을 기반으로 만들어 짐)에 포함 된 값에 액세스합니다. findControl()을 사용하려면 page_init 중에 컨트롤을 생성해야합니다.
Private Sub page_init() Handles Me.Init
If IsPostBack Then
Dim parameterSelection = hdnParameters.Value
' Add some controls to the page based upon the contents of parameterSelection
End If
End Sub
위 코드에서 page_init 중에이 코드를 실행하면 parameterSelection = ""입니다. 내가를 Page_Load 동안 동일한 코드를 실행하면
는 parameterSelection 내가 기대 값을 가져옵니다 및 모든 (그들은 후 Page_Init 과정에서 생성되지 않은 이후로는 동적으로 생성 된 컨트롤에의 FindControl()를 사용할 수 없습니다 제외)
을 잘 실행포스트 백 후에 동적으로 생성 된 컨트롤에 포함 된 값에 액세스 할 수있는 솔루션을 찾고 있습니다. 그들은 후 Page_Init 동안 생성되지 않은으로
- 현재 나는 그러나 동적으로 생성 된 컨트롤의 FindControl()를 통해 액세스 할 수 없습니다,를 Page_Load 중 선택 2로드
- 나는에 따라 동적 컨트롤을 만들 수 없습니다 hidden_field와 select2가 그 당시의 값을 가지고 있지 않은 것처럼 page_init 동안 select2의 값
아니요, 서버 쪽이 항상 먼저 실행됩니다. 선택을''에 저장하면 자바 스크립트를 기다릴 필요없이 코드 숨김에서 선택된 요소를 얻거나 사용할 수 있습니다. –
Santi
그냥 시도, hdnParameters page_init 중에 값이 없습니다. –
'runat = "server"'가있는''입니까? 나는 숨겨진 필드를 제안했다. ASP.Net 컨트롤이 포스트 백 동안 그 값을 유지하기 때문이다. 내가 볼 수있는 지금까지 <에 HiddenField ID = "hdnParameters"RUNAT = "서버"ClientIDMode/= "정적"ASP>' 후 Page_Init hdnParameters.value = 동안 "" ': –
Santi