코드 숨김에 ListItems를 추가하는 ListBox가 있습니다. 내가 가진 문제는 ListBox가 선택된 항목을 보지 못하고 있다는 것입니다. DropDownList에 AutoPostBack이 true로 설정되도록 사용자가 DropDownList에서 선택하는 항목에 따라 동적으로 채워지는 ListBox를 갖습니다. 나는 이것이 어떻게 든 문제를 일으키는 것이라고 생각한다.ListBox에서 선택한 항목을 가져 오지 못했습니다.
내 SelectedIndexChanged
메서드는 DropDownList의 항목을 선택할 때마다 사용되며 PopulateListBox
메서드를 호출합니다.
<asp:DropDownList runat="server" ID="type" width="281px" OnSelectedIndexChanged="SelectedIndexChanged" AutoPostBack="true" />
<asp:ListBox runat="server" ID="listbox" width="281px" height="200px" selectionmode="Multiple" />
는 내가 뭘하려고 오전 문자열이 선택되고 (문자열의 목록을 추가 할 수 있습니다 : 그것은 가치가 무엇인지에 대한
protected void SelectedIndexChanged(object sender, EventArgs e)
{
string typeStr = type.SelectedItem.Text;
MyType = Api.GetType(typeStr);
PopulateListBox();
}
private void PopulateListBox()
{
listbox.Items.Clear();
foreach (PropertyInfo info in MyType.GetProperties())
listbox.Items.Add(new ListItem(info.Name));
}
, 여기에 DropDownList로와 목록 상자가 : 여기처럼 그 방법이 어떻게 표시되는지를 보여줍니다 항목)을 제출 버튼을 클릭하면 세션 변수로 사용할 수 있습니다. 목록에 세션이 추가 된 후 단추가 새 페이지로 리디렉션됩니다. 디버거를 거치면서 문자열 목록은 세션에 추가되는 지점에서 비어 있습니다.
listbox.GetSelectedIndices()
아무 것도 반환하지 않습니다. 나는 DropDownList로의 변화를하지 않는 경우
업데이트
내가 선택한 항목에 액세스 할 수 있습니다. ListBox는 처음에는 페이지로드시 채워지며 선택하면 인식됩니다. DropDownList에서 무언가를 선택하고 ListBox를 다시 채우면 선택 항목이 인식되지 않습니다.
내 Page_Load
메서드는 두 가지 작업 만 수행합니다. 그것은 다음과 같이 보이는, 내 API를 변수를 초기화하고 PopulateDropDown
를 호출
private void PopulateDropDown()
{
foreach (Type t in Api.GetAllTypes())
type.Items.Add(new ListItem(t.Name));
string typeStr = type.Items[0].Text;
Type = Api.GetType(typeStr);
PopulateListBox();
}
그러나 목록 상자에서 선택한 항목을 볼 수 없습니까? 드롭 다운 목록에서 선택을 변경하면 어떻게됩니까? 또는 포스트 백을 수행하는 다른 컨트롤이 있습니까? – dzendras
@dzendras : 나는 이것에 관한 하단의 게시물을 업데이트했다. –
언제 목록 상자에 액세스합니까? PageLoad? ASP.NET 페이지 수명주기에 따라 액세스하는 곳이 맞는지 확인하십시오 (요청 컨트롤을 처리하는 초기 단계에서 해당 속성이 설정되지 않음). 또한 페이지 수명주기의 초기에 목록 상자를 지우지 않았는지 확인하십시오. – dzendras