2008-11-17 3 views
1

일부 고객 기능을 추가하여 Grid를 재정의했습니다. 기능 중 하나는 페이지 크기를 조정하는 드롭 다운입니다. 나는 고객 서버 컨트롤을 사용하여 그리드를 확장하고 있는데, 이는 지금까지 내가해온 것을 위해 훌륭하게 작동한다. 자, 그러나 나는 역동적으로 추가 된 컨트롤을 다시 게시 할 수있는 약간의 문제가 있습니다. 다시 게시를 시작하는 자바 스크립트가 없습니다.동적으로 추가 된 컨트롤이 포스트 백을 수행하지 않음

Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs) 
    Dim pageSizePanel As New Panel 
    ... 
    Dim countList As List(Of String) = GetCountList() 
    Dim pageSizeDropdown As New DropDownList() 
    pageSizeDropdown.ID = "pageSizeDropdown" 
    pageSizeDropdown.DataSource = countList 
    pageSizeDropdown.DataBind() 

    AddHandler pageSizeDropdown.SelectedIndexChanged, _ 
       AddressOf HandlePageSizeChange 

    pageSizePanel.Controls.Add(pageSizeDropdown) 
    ... 
    MyBase.Controls.AddAt(0, pageSizePanel) 
    MyBase.OnPreRender(e) 
End Sub 

html로 그래서

<select name="tab$grid1Tab$RadGrid1$pageSizeDropdown" 
    id="tab_grid1Tab_RadGrid1_pageSizeDropdown"> 
     <option selected="selected" value="10">10</option> 
     <option value="20">20</option> 
     <option value="40">40</option> 
     <option value="80">80</option> 
     <option value="All">All</option> 

    </select> 

이며, 이것이 내가 컨트롤을 '주입'있을 때 함께 할 수 있는가? 컨트롤을 동적으로 추가해야합니까?

답변

2

내가 처음으로 느낀 것은 당신이 누락 된 것되었다

pageSizeDropdown.AutoPostBack = true 

을하지만 난 제어 pageSizeDropdown 필요한 것 같아 그게

+0

당신은 그게 전부가 아닌 것에 대해 정확합니다. ViewState에는 굉장히 많은 것들이 있습니다. –

+0

문제의 두 번째 부분은 포스트 백이 서버에 도달하면 발생할 수 있습니다. 페이지를 다시 작성할 때 해당 컨트롤이 없으면 (예 : DataGrid를 빌드하는이 코드에서는 ' t는 아직 달렸다). 나는 페이지 초기화 이벤트에서 격자를 만들려고했다. – John

1

드롭 다운 목록을 다시 게시하려면 "AutoPostBack"을 true로 설정해야합니다. 그렇지 않으면, 다른 컨트롤이 양식을 다시 게시해야합니다 (그러나, 일어날 때 SelectedIndexChanged 이벤트가 발생합니다).

1

을 작동하기 위해서는 당신이 필요로하는 모든 있는지 확실하지 않다 페이지 라이프 사이클의 앞부분에 이벤트가 생성되도록하려면 http://msdn.microsoft.com/en-us/library/ms178472.aspx을 참조하십시오. 동적으로 추가 된 컨트롤은 컨트롤 이벤트가 발생하도록 LoadComplete 이벤트 전에 만들어야합니다.

관련 문제