데이터베이스 쿼리에 동적으로 바인딩되는 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를 실행하므로 구성이 다르게됩니다.
모든 의견이나 제안을 환영합니다. 미리 감사드립니다!
아, 그게 실제로 일어날 수도 있습니다. 그것은 Sitecore가 페이지 라이프 사이클에 어떻게 매달리는 지와 관련이 있습니다. 많은 사람들과 자신의 영업 비밀 중 하나가 완전히 이해하지 못하는 것 같습니다. 나는이 기사를 썼지 만, 이것보다 많이 모른다. –
하하! 나는 당신의 SO 사용자 이름을 실제로 보지 않고 있었다! 블로그 헤드 업에 많은 도움을줍니다!이것에 관해서도 SDN에 대한 기사가 있지만 계정이 없다면 사용할 수 없습니다. – xan