2012-07-12 3 views
0

웹 콘트롤을 반환하고 전달하는 것의 차이점을 알고 싶습니다. 내 aspx 코드에있는 webcontrol있다. 마찬가지로(웹) 컨트롤을 반환하는 것과 비교하여 통과하나요?

<asp:TableCell> 
<telerik:RadComboBox runat="server" ID="rcbName"></telerik:RadComboBox> 
</asp:TableCell> 

콤보 상자를 프로그래밍 방식으로 채우고 싶습니다 (어떤 종류의 컨트롤이든 상관 없습니다).

그래서 나는 콤보 반환이 기능을했다 :

private RadComboBox rcb CreateRcbSearchResults(DataSet ds) 
{ 
    RadComboBox rcb = new RadComboBox(); 

    foreach (DataRow row in ds.Tables[0].Rows) 
     rcb.Items.Add(new RadComboBoxItem(row["description"].ToString(), row["id"].ToString())); 

    return rcb; 
} 

을 그리고 나는 콤보 설정합니다 :이 작동하지 않는 몇 가지 이유를 들어

rcbName = CreateRcbSearchResults(ds); 

을하고 그냥 저를 줄 것이다 빈 콤보 상자 (브라우저 쪽)를 다시 보았습니다. 비록 디버깅 할 때 채워지는 것을 보았습니다.

동료

는 그것을보고 및 콤보 상자 전달하는 제 기능을 변경 :
private void CreateRcbSearchResults(RadComboBox rcb, DataSet ds) 
{ 
    foreach (DataRow row in ds.Tables[0].Rows) 
     rcb.Items.Add(new RadComboBoxItem(row["description"].ToString(), row["id"].ToString())); 
} 

지금 내가 할 :

CreateRcbSearchResults(rcbName, ds); 

을 그리고 지금은 작동합니다. 나는 이것이 왜 있는지 알고 싶습니다. 누군가 말해 줄 수 있니?

답변

1

콤보 박스가 설정 한 것보다 페이지의 일부일 때 더 많은 속성이 설정됩니다. 당신은 ID와 겹침 꼴이없는 콤보 박스의 완전히 새로운 인스턴스를 생성 한 다음 페이지 로딩에 의해 생성 된 인스턴스를 대체했습니다.

코드를 변경하면 페이지가 만든 컨트롤에 대한 참조가 전달 된 다음 항목이 추가되었습니다.

+0

aspx 페이지에서 호출 할 때와 동일한 작업을 수행하지 않는 이상한 것처럼 보입니다. 처음에는 ID를 설정했지만 rcbName이 이미 ID로 설정되었으므로 필자는 필요하다고 생각하지 않습니다. – Rubenisme

+0

컨트롤에 설정된 페이지 특정 값이 있습니다. 디버깅을 시도하고 전달중인 컨트롤을보고 새 RadComboBox()와 비교하여 차이점을 확인하십시오. –

관련 문제