LBParent
, LBChild1
및 LBChild2
의 세 가지 목록 상자가있는 ASP.NET 컨트롤이 있습니다.선택한 인덱스 변경시 서로 참조하는 ASP.NET 채우기 목록
LBParent
은 프로그래밍 방식으로 채워야합니다. Page_Load
에서이 작업을 수행합니다.
사용자가 LBParent
에서 값을 선택하면 프로그래밍 방식으로 데이터가있는 LBChild1
과 LBChild2
을 모두 채우고 싶습니다. 어린이 목록 또한 선택한 값을 추적해야합니다.
기본적으로 상위 목록은 사용자 목록이며, 첫 번째 목록은 사용자의 사용 권한 목록이고, 두 번째 목록은 사용자에게없는 사용 권한 목록입니다.
내 계획은 두 목록 사이에 사용 권한을 이동하는 두 개의 단추를 추가하는 것입니다.
불행히도, 나는 제대로 작동하지 않습니다.
부모 목록을
Page_Load
으로 채우는 경우 선택한 색인이 재설정 된 것처럼 보입니다. 인덱스를 저장하려면ViewState
을 사용했습니다 ... 그러나 포스트 백 이후에는 업데이트되지 않으므로 추가 새로 고침이 필요합니다. 이것은 허용되지 않습니다.OnParentSIC
이벤트에서 어린이 목록 상자를 채우는 경우 선택한 색인을 추적 할 수있는 방법이 없습니다. 목록 상자가 "너무 빨리"다시 채워지기 때문에OnChildXSIC
이벤트가 실행되지 않습니다. (?)
의도 한대로 작동 시키려면 어떻게해야합니까? 어쩌면 더 나은 해결책이있을 수 있지만 현재 가능한 솔루션을 볼 수 없기 때문에이 솔루션이 어떻게 작동하는지 이해하고 싶습니다. 이
처럼
Control.ascx
<%@ Control Language="C#" AutoEventWireup="true" EnableViewState="True" CodeBehind="..." Inherits="..." %>
<form runat="server">
<asp:ListBox ID="LBParent" runat="server" CssClass="form-control"
AutoPostBack="true" OnSelectedIndexChanged="OnParentSIC" />
<asp:ListBox ID="LBChild1" runat="server" CssClass="form-control"
AutoPostBack="true" OnSelectedIndexChanged="OnChild1SIC" />
<asp:ListBox ID="LBChild2" runat="server" CssClass="form-control"
AutoPostBack="true" OnSelectedIndexChanged="OnChild2SIC" />
</form>
Control.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{
// Populate parent
for(...) LBParent.Items.Add(...);
}
'ViewState를 사용하여 색인을 저장했습니다 ...하지만 추가로 새로 고침이 필요합니다. –
@Ganesh_Devlekar에 대한 코드를 게시 할 수 있습니다 : 기본적으로'OnParentSIC'과 같은 SelectedIndexChanged 이벤트에서 간단히'ViewState [ "parentIdx"] = LBParent.SelectedIndex;를 호출했습니다. 이 이벤트가 실행되는 동안 목록이 채워진 후에 발생하므로 추가 페이지 새로 고침이 필요합니다. 'Page_LoadComplete'에리스트 채우기 코드를 넣으면 이벤트가 전혀 발생하지 않습니다. –
시도한 코드를 모두 붙여 넣으십시오. –