문제

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");

컨트롤이 데이터 묶인 경우 데이터 바인딩 후 자손에 액세스하려고하십시오. 또한 해당 라인의 디버거에서 물체를 검사하는 데 도움이 될 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top