2010-02-16 7 views
1

ObjectDataSource + ASPxGridView를 사용하여 UserControl을 만들었습니다. 은 ObjectDataSource를의 내가 UserControl을 대중의 매개 변수에 따라이 동적으로 설정하여 SelectMethod :ObjectDataSource -> SelectMethod가 지정되지 않았습니다.

private int _companyID = -1; 
public int CompanyID 
{ 
    get { return _companyID; } 
    set 
    { 
     _companyID = value; 

     dsPersons.SelectMethod = "GetPersonsByCompany"; 
     dsPersons.SortParameterName = "sort"; 
     dsPersons.SelectParameters.Clear(); 
     dsPersons.SelectParameters.Add("companyID", DbType.Int32, value.ToString()); 
    } 
} 

때 나는이 같은 페이지에 내 컨트롤을 사용하여이 같은

<uc:PersonsManager ID="personsManager" runat="server" CompanyID="2" /> 

또는 다른 ASPxGridView에 넣어 :

<dxwgv:ASPxGridView ID="gridViewCompany" runat="server" DataSourceID="dsCompany" KeyFieldName="ID" Width="100%" 
    AutoGenerateColumns="false"> 
    <Columns> 
     <dxwgv:GridViewDataColumn> 
      <DataItemTemplate> 
       <uc:PersonsManager ID="personsManager" runat="server" CompanyID='<%# Bind("ID") %>' /> 
      </DataItemTemplate> 
     </dxwgv:GridViewDataColumn> 
    </Columns> 
</dxwgv:ASPxGridView> 

모두 정상적으로 작동하지만 제어 코드를 코드 숨김에서 선언하려고합니다. :

<uc:PersonsManager ID="personsManager" runat="server" /> 

다음를 Page_Load에서 :

personsManager.CompanyID = 2; 

을 그리고 그때 내가 어떤 데이터의 UserControl의 ASPxGridView의 첫 번째로드를 볼 수 있습니다 이전의 선언을 사용하는 경우, 어떤 조작 HtmlRowCreated 이벤트에 오류가 발생할 수 있기 때문에 선택 작업이 ObjectDataSource를 'dsPersons' 을하지 않는 한에 의해 지원되지 않습니다

: UserControl을의 ASPxGridView의 SelectMethod가 지정됩니다.

왜 이런 일이 발생합니까?

감사합니다.

답변

0

개체 데이터 원본을 추가하면 데이터베이스의 일반적인 CRUD 메서드를 지원하는 개체의 methdod를 선택할 수있는 마법사가 나타납니다.

objectDataSource의 smarttag를 클릭하고 '데이터 소스 구성'을 선택하면 나타납니다.

는 .. 그 방법을 구현하는 방법을 배울 수 http://msdn.microsoft.com/en-us/library/9a4kyhcx.aspx에서

행운을보십시오.

+0

: 나는 제어 매개 변수를 설정할 때 내 방법이 잘 작동 인라인 또는 다른 gridView (Bind) 내부에 있지만 코드 숨김 (C#)에서 매개 변수를 설정하면 작동하지 않습니다. ASPxGridView의 문제와 콜백, 왜 Page_Load가 무시됩니까? –

+0

조금 혼란 스러웠습니다. 페이지로드 후에 바인딩이 발생했습니다. 매개 변수는 여전히 마크 업에 설정되어 있습니다. 맞습니까? 당신은 그들을 무시하고 싶습니까? 당신은 onselect를 다루거나 선택하거나 어떤 방법 으로든 그것을 처리해야 할 수도 있습니다. 다시, 나는 막연하게 회상하고있다. 그러나 나는 한 번 이상 거기에 있었다는 것을 안다. ... –

+0

음 ...나는 페이지 (다른 아무것도)에 사용자 정의 컨트롤이 있습니다. UserControl은 gridView와 dataSource를 가지며, 컨트롤의 public 매개 변수에 따라 select 메소드가 있습니다. 마크 업에서이 매개 변수를 설정하면 모두 정상적으로 작동하지만 코드 숨김에서이 ​​매개 변수를 동적으로 설정하려면 사용자 정의 컨트롤의 gridView에서 데이터를 조작 할 때 오류가 발생합니다. –

0

이 블로그 게시물 "Manually Set ObjectDataSource.SelectMethod Property BUG" by Eran Nachum. 그는 OnInit 이벤트 중에 그리드의 데이터 소스를 설정 한 다음 OnPreRender 중에 데이터 바인딩을 수행하는 방법을 설명합니다.

는 (위에서 언급 한 웹 사이트는 더 이상 활성화되지 웨이 백 머신에 블로그 게시물의 사본이있다 :. Eran Nachum's Blog from December 2007 in the wayback machine) 당신은 상황을 제대로 이해하지 못했다

+2

제공된 URL은 죽었습니다. ( – breez

+1

예, 불행히도. 운좋게도 웨이크 백 컴퓨터에서 사본을 얻은 것 같습니다. 블로그 게시물로 시작하는 페이지의 URL로 답변을 업데이트합니다. –

관련 문제