2009-11-21 3 views
1

DropDownListCreateChildControls이라는 함수로 초기화하고 Controls 컬렉션에 추가합니다. 그런 다음 Render() 메서드를 재정의 한 다음 DropDownList을 렌더링합니다. 웹 파트는 System.Web.UI.WebControls.WebParts.WebPart에서 상속됩니다. 드롭 다운 목록을 바인딩 한 다음 새 목록 항목을 추가하십시오.

내가 이렇게 내 웹 파트에 DropDownList 바인딩 :

private void BindClientTypes() 
{ 
    DataTable dt = DB.GetAllClientTypes(); 

    if (dt == null) 
    { 
     ltGlobalErrorMsg.Text = GlobalErrorMessage; 
     ltGlobalErrorMsg.Visible = true; 
    } 
    else 
    { 
     ddlClient.DataSource = dt; 
     ddlClient.DataValueField = "ID"; 
     ddlClient.DataTextField = "Name"; 
     ddlClient.DataBind(); 
     ddlClient.Items.Insert(0, PleaseSelectItem); 
    } 
} 

내가 DataBind를 호출 한 후 DropDownListSelectedIndex을 설정하려고하면, 나는 컨트롤이 여러 선택한 항목을 가질 수 없습니다라는 오류가 발생합니다.

그 코드는 잘 작동, 나는이 줄을 주석 경우 I는 데이터 바인딩 후 SelectedIndex을 설정할 수 있습니다 문제가 해결되지 왜

ddlClient.Items.Insert(0, PleaseSelectItem); 

사람이 설명 할 수 있습니까?

감사합니다.

답변

3
ddl.Items.Add(new ListItem("yourtext", "yourvalue")); 

당신이 다음 다시 사용하는 더 많은 ListItems이있는 경우 그들은 모두 아마 발생한 문제의 원인이되는 같은 값을 얻을 것이다, 그래서 당신은 당신이 그을 ListItem의 인스턴스에 설정하는 '선택'속성을 설정하면 .

문제가 2 dropdownlists로이 예제를보고 설명하기 위해 : 그들은 같은 항목 목록을 공유하기 때문에

값을 선택 ddlTest2 's의 설정
ListItem item1 = new ListItem("1", "1"); 
ListItem item2 = new ListItem("2", "2"); 
ListItem item3 = new ListItem("3", "3"); 

ddlTest.Items.Add(item1); 
ddlTest.Items.Add(item2); 
ddlTest.Items.Add(item3); 

ddlTest2.Items.Add(item1); 
ddlTest2.Items.Add(item2); 
ddlTest2.Items.Add(item3); 

ddlTest2.SelectedValue = "2"; 

실제로뿐만 아니라 ddlTest을 설정합니다. 이 문제를 실행하면 과 ddlTest2ddlTest2으로 설정되어 있어도 정확히 동일한 값을 갖게됩니다.

+0

나를 괴롭혔던 것은 내가 선택한 목록을 "PleaseSelectItem"으로 설정하지 않았다는 것이 었습니다 ... 그러나 드롭 다운 목록의 선택된 색인은 항상 0이었고 색인 항목 0을 색인에 추가했습니다. 선택된 인덱스를 0으로 설정합니다. 예, 인스턴스를 다시 사용하지 않으면 코드가 올바르게 작동합니다. 감사합니다. 이것은 좋은 교훈이었습니다. 따라서 여러 개의 드롭 다운 목록에서 인스턴스를 재사용하지 마십시오. – iJK

+0

아, 그건 이해가됩니다. 감사합니다. – iJK

1

PleaseSelectItem은 어디에서 신고 했습니까? 많은 dropdownlists에 listitem의 동일한 인스턴스를 추가하면이 문제가 발생할 수 있습니다.

+0

예, 인스턴스를 재사용하고 있습니다. 좋아, 같은 인스턴스를 다시 사용하지 않고 시도해 보자. – iJK