2010-04-08 7 views
0

데이터베이스 쿼리에 동적으로 바인딩되는 DataGrid가 있습니다. 사용자가 텍스트 필드에 검색 텍스트를 입력하고 검색을 클릭하면 코드 숨김이 LINQ를 사용하여 적절한 데이터베이스 쿼리를 만듭니다 (문자열을 기반으로 테이블을 검색하고 제한된 열 집합을 반환 함).SelectedIndexChanged가 호출 될 때 Gridview가 비어 있습니다.

그런 다음 GridView 데이터 소스를 쿼리로 설정하고 DataBind()를 호출합니다.

protected void btnSearch_Click(object sender, EventArgs e) 
{ 
    var query = from record in DB.Table 
       where record.Name.Contains(txtSearch.Text) //Extra string checking etc. removed. 
       select new 
       { 
        record.ID, 
        record.Name, 
        record.Date 
       }; 

    gvResults.DataSource = query; 
    gvResults.DataBind(); 
} 

이 작동합니다.

사용자가 표에서 행을 선택하면 SelectedIndexChanged 이벤트 처리기는 표의 행 (필드 중 하나)에서 ID를 가져 와서 DB에서 전체 레코드를 쿼리 한 다음 일련의 편집기/세부 정보를 채 웁니다 필드에 레코드 전체 세부 정보.

protected void gvResults_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    int id = int.Parse(gvResults.SelectedRow.Cells[1].Text); 
    DisplayDetails(id); 
} 

이 코드는 내 로컬 컴퓨터에서 잘 작동합니다. 그러나 프로덕션 서버에서는 함수가 성공적으로 호출되지만 행과 열의 수는 gvResults이고 griview는 0이며 테이블은 비어 있습니다.

gridview의 viewstate가 활성화되어있어 확실한 차이점을 볼 수 없습니다. 몇 가지 순진한 가정을했거나 디버그에서 다르게 구성 될 수있는 것에 의존하고 있습니까?

로컬로 VS2008에서 비어있는 asp.net 웹 프로젝트를 실행하여 개발 속도를 높이고 있습니다. 프로덕션 서버에서 sitecore CMS를 실행하므로 구성이 다르게됩니다.

모든 의견이나 제안을 환영합니다. 미리 감사드립니다!

답변

0

sitecore 포럼을 둘러 보았을 때, 나는이 blog post을 통해 잠재적 해결책을 설명했습니다.

Web.config의 <typesThatShouldNotBeExpanded> 섹션에 <type>System.Web.UI.WebControls.GridView</type>을 추가했는데 제대로 작동하는 것 같습니다.

sitecore의 페이지 레이아웃 렌더링 파이프 라인과 관련이있는 것으로 보입니다. 하위 레이아웃과 내부 자리 표시자를 확장하여 전체 페이지 렌더링을 생성합니다. 그것은 페이지의 .Net 컨트롤에 액세스하고 조금 주위에 그들을 찌르는, 어떤 컨트롤이 올바르게 작동하지 않을 수 있습니다.

SDN에는 article이 있지만, 충분한 privalegs가있는 계정에서만 읽을 수 있습니다. 희망이 앞으로 다른 sitecore 사용자를 도울 수 있기를 바랍니다.

+0

아, 그게 실제로 일어날 수도 있습니다. 그것은 Sitecore가 페이지 라이프 사이클에 어떻게 매달리는 지와 관련이 있습니다. 많은 사람들과 자신의 영업 비밀 중 하나가 완전히 이해하지 못하는 것 같습니다. 나는이 기사를 썼지 만, 이것보다 많이 모른다. –

+0

하하! 나는 당신의 SO 사용자 이름을 실제로 보지 않고 있었다! 블로그 헤드 업에 많은 도움을줍니다!이것에 관해서도 SDN에 대한 기사가 있지만 계정이 없다면 사용할 수 없습니다. – xan

1

web.config를 확인하십시오. 아마도 "AutomaticDataBind"속성은 한 환경에서 "false"로 설정되고 devbox에서는 "true"로 설정됩니다.

내가 분명히 확신 할 수 없다,하지만 난 과거에 비슷한 문제로 망치로 봤는데 증상이

P.S. :-) 여기에 설명했다 똑같이 Sitecore는이 값의 기본값을 false로 설정합니다.

관련 문제