2009-02-03 3 views
2

사용자 정의 컨트롤 (편집 : 웹 컨트롤/서버 컨트롤이 아님)을 만들면 데이터 바인딩을 얻는 것이 매우 간단합니다. 난 그냥 datasourceID 속성을 추가합니다.asp.net 사용자 컨트롤을 사용하여 디자인 화면 렌더링 및 디자인 타임 데이터 소스 선택을 얻는 방법

뒤에 코드에서

(VB) 뒤에 코드에서

Partial Public Class BandedControl 
    Inherits UserControl 

    Public Property DataSourceID() As String 
     Get 
      Return MyGridView.DataSourceID 
     End Get 
     Set(ByVal value As String) 
      MyGridView.DataSourceID = value 
     End Set 
    End Property 

End Class 

(C#을)

public partial class BandedControl : UserControl 
{ 

    public string DataSourceID { 
     get { return MyGridView.DataSourceID; } 
     set { MyGridView.DataSourceID = value; } 
    } 
} 

내 문제는이 렌더링도 내가 드롭 다운 목록을하지 않는 설계 시간을 나누기 때문이다 내 데이터 소스를 선택하십시오. 이 문제를 어떻게 해결합니까? (힌트 : 타입 컨버터가 필요하다고 생각하지만, 사용자 컨트롤이 아닌 서버 컨트롤과 관련된 모든 정보).

답변

2

당신은 당신의 속성 정의에 IDReferenceProperty 속성을 추가 시도 할 수 제어 확장하는 것이다 IDReferencePropertyAttribute 클래스

그래도 작동하지 않는 경우 - 나는 또한 UserControl 대신 DataBoundControl에서 상속을 시도하고 어디서나 볼 수 있는지보십시오.

+0

고마워,하지만 그건 내가 사용하려고하는 사용자 컨트롤에 대해 작동하지 않습니다. DataBoundControl에서 상속 한 경우 더 이상 사용자 정의 컨트롤을 사용할 수 없으며 컨트롤 디자이너를 사용할 수 없게됩니다. 이는 피하려고하는 것입니다. –

+0

네 - TypeConverter로해야 할 것 같아요. 아마도 컨트롤 자체가 아닌 페이지에서 데이터 소스 컨트롤을 가져올 사용자 지정 typeconverter 일 수 있습니다. –

1

웹 사용자 정의 컨트롤은 런타임에 동적으로 컴파일되므로 디자인 타임에 렌더링되지 않으므로 웹 사용자 지정 컨트롤을 만들면됩니다. 여기에 가장 좋은 방법은

public partial class BandedControl : UserControl 
{ 
    [System.Web.UI.IDReferenceProperty(typeof(DataSourceControl))] 
    public string DataSourceID 
    { 
     get 
     { 
      return MyGridView.DataSourceID; 
     } 
     set 
     { 
      MyGridView.DataSourceID = value; 
     } 
    } 
} 

에 대한 추가 정보를 원하시면 http://msdn.microsoft.com/en-us/library/system.web.ui.idreferencepropertyattribute.aspx보기 ... 기존 바인딩 웹 중 하나가

http://msdn.microsoft.com/en-us/library/aa651710(VS.71).aspx

+0

감사입니다 수 있습니다. 그러나 데이터 소스가 사용자 정의 컨트롤 안에 있으면 컨트롤 *은 VS2008의 디자인 화면에 렌더링됩니다 (이 기능은 새로운 VS2008 기능이라고 생각합니다). 이 기사는 VS.NET (2003)을 참조하므로 사용자 컨트롤을 사용하여이 작업을 수행 할 수 있습니다 ... ??? –

+0

죄송합니다. vs2008에 익숙하지 않지만 정직하게는 시간을 보내고 사용자 정의 컨트롤을 만든 다음 대답을 기다리기가 더 쉽다고 생각합니다. 어쩌면 도움이 될 것입니다. http://weblogs.asp.net/scottgu/archive/2005/12/04/432319.aspx – CalvinR

+0

절박한 필요는 없습니다. 한 달 정도 기다려주세요. (잘하면!) 웹 프로젝트가 시작됩니다. 3 월, 나는 현재 더 많은 경험을 가지고있는 winforms를하고 있으며, 나는 내 선택권을 느끼고있다. 나는 다른 대답을 기다릴 것이고, 끝낼 수 없다면 (또는 아무도 그것을하는 법을 모른다는) 그때 나는 다시 생각할 것이다. –

0

이것이 정확히 원하는지 확실하지 않지만 일부 dnr tv 에피소드에서 이와 비슷한 것을 기억하고 있습니다.

가 나는 미구엘 카스트로가 1 & 2 에피소드라고 생각하지만, 에피소드 31

모든 비디오 아카이브 찾고에 대한 here

+0

감사합니다. 지금 그들을보고 있습니다. 그러나 나는 이것들이 웹 컨트롤/서버 컨트롤에 관한 것이고 사용자 컨트롤이 아니라고 생각한다. ... –

+0

나는 사용자 컨트롤에서 원하는 것을 할 수없고 웹/서버 컨트롤을 사용해야한다고 확신한다. – Remmus

+0

그래, 나 같은 결론에 도달했다. 부끄러운 줄 알아. –

관련 문제