C# ListView에서 드롭 다운 박스에 액세스하는 방법은 무엇입니까?
-
05-07-2019 - |
문제
ListView가 있습니다. 내 ListView에는 CodeBehind 페이지를 작성하려는 드롭 다운 박스가 있습니다. 이 웹 조종에 액세스하는 방법을 모르겠습니다. 다음은 작동하지 않습니다.
DropDownList ddl = (DropDownList)lvUserOverview.Controls[0];
DropdownList가 ListView의 유일한 컨트롤이기 때문에 인덱스가 0이라는 것을 알고 있습니다 (또한 색인 1을 시도 할 때 범위 예외에서 인덱스를 얻습니다).
누군가 드롭 다운 목록에 어떻게 액세스 할 수 있는지 말해 줄 수 있습니까? 내 페이지에서 ListItems를 추가하고 싶습니다.
ASPX 코드 :
<asp:DropDownList ID="ddlRole" onload="ddlRole_Load" runat="server">
</asp:DropDownList>
CodeBehind :
protected void ddlRole_Load(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)lvUserOverview.FindControl("ddlRole");
if (ddl != null)
{
foreach (Role role in roles)
ddl.Items.Add(new ListItem(role.Description, role.Id.ToString()));
}
}
해결책
자체로드 이벤트 핸들러 내부의 드롭 다운 목록을 처리하려면 DropdownList로 Cast Sender 만 있으면됩니다.
DropDownList ddlRole = sender as DropDownList;
다른 팁
이것이 ListView에서 렌더링되면 여러 개의 드롭 다운리스트가 인스턴스화 될 가능성이 높습니다. 각각은 고유 한 ID를 얻을 수 있으며 Matthew의 접근 방식을 사용할 수 없습니다.
ItemDatabound 이벤트를 사용하여 E.ITEM.FINDCONTROL ( "NAMEOFDROPDOWNLIST")에 액세스하여 생성 된 각 드롭 다운을 반복 할 수 있습니다.
당신이 하나만 만들고 있다면 ... 왜 listview에 있습니까?
이 시도:
DropDownList ddl = (DropDownList)lvUserOverview.FindControl("NameOfDropDownList");
컨트롤이 데이터 묶인 경우 데이터 바인딩 후 자손에 액세스하려고하십시오. 또한 해당 라인의 디버거에서 물체를 검사하는 데 도움이 될 수도 있습니다.
제휴하지 않습니다 StackOverflow