2013-10-11 2 views
0

저는 웹 개발에 익숙하지 않고 다음과 같은 문제가 발생했습니다. Visual Basic으로 VS2010에서 작업.자바 스크립트로 드롭 다운 목록에 항목을 추가하고 포스트 백에 유지

gridview가있는 페이지 (aspx)가 있는데이 행에는 tickbox가있는 열과 'action'열이 있습니다. 여기에는 비어있는 숨겨진 드롭 다운 목록이 있습니다 (모든 행에는 이).

사용자가 상자를 틱 때마다 서버에서 AJAX 호출 (AJAX에서의 첫 번째 시도 인 :-)의 일부 값을 검색하고이 값을 사용하여 'action'열에 드롭 다운 목록을 채 웁니다. 선택된 행 여태까지는 그런대로 잘됐다.

사용자는 드롭 다운 목록에서 항목을 선택한 다음 버튼을 누르면 (업로드) 정보를 처리하기 위해 다시 게시가 수행됩니다.

그러나 코드 뒤에있는 드롭 다운 목록에서 추가 된 항목을 검색 할 수 없습니다 (선택한 값은 제외). 드롭 다운 목록을 가져올 수 있지만 항목이 없습니다.

인터넷 검색을 한 후 양식이 서버에 게시 될 때 클라이언트 측 변경 사항이 유지되지 않는다는 것을 깨달았습니다. 이해하지만 그것은 이상하게 보입니다. 페이지가 생성 될 때 드롭 다운이 만들어 지므로 javascipt가 추가 된 항목을 저장하지 않는 이유는 무엇입니까? 특히 몇 가지 해결 방법을 찾았으므로 추가 된 항목이나 selectedvalue를 저장하기 위해 숨겨진 필드를 사용했습니다. 숨겨진 필드에 저장할 수 있다면 왜 실제 드롭 다운 목록에 저장할 수 없습니까?

분명히 웹 사이트의 작동 방식을 이해하지 못합니다. 그러나 이것은 페이지가 처음로드 된 후 드롭 다운 및 목록 상자에서 값을 변경할 수 있음을 의미하지만 서버 측에서 사용할 수 없습니까?

편집 : 일부 코드; 나는 AJAX 호출을 통해 내가 검색 한 서로 다른 값을 추가하는 방법을 먼저 자바 스크립트 코드 조각이 잘 작동

var drop = row.findElement("ddlAction"); //find the dropdownelement in the DOM 
for (j = 0; j < dropdownitems.length; j++) { //add all the options from xml 
    option = document.createElement("option"); 
    option.text = dropdownitems[i].getAttribute("text"); 
    option.value = dropdownitems[i].getAttribute("value"); 
    drop.add(option, null); 
} 

, 드롭 다운리스트가 작성되고 내가 선택할 수 있습니다. 페이지가 게시됩니다 때 나는 서버 코드에서 다음을 수행하십시오

Dim SelCount As Integer = LocalFilesGrid.SelectedItems.Count 
If SelCount >= 0 Then 
    For Each dataItem In LocalFilesGrid.SelectedItems 
     Dim drop As DropDownList 
     drop = dataItem.FindControl("ddlAction") 
     If drop.Items.Count = 0 Then 'always zero 
      MsgBox("Nope") 
     End If 
    Next 
End If 
내가 그리드의 선택된 행을 통해 루프 수 있도록하고 싶습니다

, 해당 드롭 다운리스트와 selectedvalue를 얻을.

+0

SOF 사람들은'code please'를 보길 원할 것입니다. –

답변

2

이렇게 다양한 기술을 혼합하면 이러한 문제가 발생할 것입니다. 당신이하려는 것은 Ajax의 비트와 ASP.NET의 비트입니다. 하나를 선택하고 사용하십시오. AJAX 대신 ASP.NET을 선택하면 UpdatePanel으로 전화를 걸면 쉽게 생활 할 수 있습니다.

Ajax 자신을 채우고 싶다면 버튼 클릭을 처리하고 포스트 백이 아닌 아약스로 요청을 제출하십시오.

aspx에서 드롭 다운을 선언해야하지만 항목이 클라이언트 측에 추가되어서 서버가 항목에 대한 지식이 없기 때문에 항목을 제외하고 드롭 다운을 검색 할 수있는 이유입니다.

이유는 ASP.NET은 뷰 상태를 사용하기 때문에 뷰 상태를 엉망으로 만들 수 없습니다. 따라서 숨겨진 필드에 데이터를 추가하고 서버에서 데이터를 읽을 수는 있지만 뷰 상태로 데이터를 쓸 수는 없습니다.

가장 좋은 방법은 ASP.NETUpdatePanels을 사용하는 것입니다.믹스를하면 매 단계마다 어떤 종류의 트릭을 계속해야합니다. 자신 만의 Ajax를 만들고 싶다면 MVCRazor (mvc와 aspx가 아닌)을 사용하십시오.

+0

흠 .. 나는 UpdatePanel을 살펴볼 것입니다. –

관련 문제