2012-12-23 10 views
1

런타임에 웹 페이지 Page_Load 이벤트에 채워지는 두 개의 목록 상자가 있습니다. Page.IsPostBack을 사용하여 목록이 포스트 백이 아닌 경우에만 채워지는지 확인합니다.런타임에 목록 상자 항목 추가 및 제거

목록 상자 A에는 약 150 개의 항목이 있고 목록 상자 B는 비어 있습니다. 추가 및 제거라는 두 개의 단추가 있습니다. 목록 상자 A의 항목을 선택하고 추가 버튼을 누르면 해당 항목이 목록 상자 B로 이동합니다.

목록 상자 B에서 이러한 항목을 선택하는 데 문제가 있습니다. 자동 게시백을 TRUE로 설정하면 항목을 선택할 수 없습니다. 한 항목을 선택하면 다시 게시가 발생하고 Enableviewstate를 TRUE로 설정 한 경우에도 선택 항목이 선택되지 않은 것처럼 선택이 취소됩니다.

Autopostback을 FALSE로 설정하면 아무 문제없이 Items를 선택할 수 있지만 서버 쪽에서 Selected 속성을 선택하면 모두 틀립니다.

autopostback이 설정되어 있어도 서버 측에서 채워진 항목을 볼 수 있으며 선택한 속성 만 항상 false입니다.

모든 목록 상자 항목과 값은 고유합니다.

이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까?

For i = 0 To (ListboxA.Items.Count - 1) 
     If ListboxA.Items.Item(i).Selected = True Then 
      ListboxB.Items.Add(ListboxA.Items.Item(i)) 
     End If 
    Next 
    For i = 0 To (ListboxB.Items.Count - 1) 
     If ListboxA.Items.Contains(ListboxB.Items.Item(i)) Then 
      ListboxA.Items.Remove(ListboxB.Items.Item(i)) 
     End If 
     ListboxB.Items.Item(i).Selected = False 
    Next 

과리스트 박스 : 당신이 목록 상자를하고 있기 때문에

<asp:ListBox ID="ListboxA" runat="server" SelectionMode="Multiple" AutoPostBack="True"></asp:ListBox> 
    <asp:ListBox ID="ListboxB" runat="server" SelectionMode="Multiple" AutoPostBack="True"></asp:ListBox> 
+0

코드 표시 – YardenST

+0

@YardenST 코드를 포함하도록 게시물을 편집했습니다. – Rahmatizadeh

답변

0

선택 갈해야 다음

는 내가 추가 버튼의 클릭 이벤트에 목록 상자 B를 채우는 데 사용하고 코드입니다. 모든 포스트 백에서 databind(). 포스트 백이 아니고 포스트 백 이후에도 선택 사항이 남아있을 때에 만 수행하십시오.

+0

포스트 백에서 databind를 수행하지 않습니다. 내가 내 질문에 언급했듯이, 나는 Page.IsPostBack을 점검하여 이것이 일어나지 않았 음을 확인한다. – Rahmatizadeh

+0

나는 본다. 문제는 "런타임에 목록 상자가 만들어집니다"입니다. 그리고 런타임에 컨트롤을 만들 때마다 포스트 백 데이터를 수동으로 처리해야합니다. –

+0

단순히 페이지의 loadviewstate 및 saveviewstate 메소드를 무시하십시오. 뷰 상태 저장 메서드에서 선택한 인덱스를 viewstate에 저장합니다. loadViewstate 메서드에서 값을로드하고 목록 상자에 적용합니다. :) –