2008-11-07 5 views
0

ObjectDataSource에서 가져온 IList를 반환하고 Gridview에 바인딩하는 개체가 있습니다. 난 그냥 바인딩 표준 사용하는 경우 모든 잘 작동하지만 나는 다음과 같이 내가하는 LinkButton에 속성을 설정하는 바인딩을 정의하기 위해 노력하고있어 :DataItem을 사용자 지정 바인딩 시나리오의 DataRowView로 캐스팅 할 수 없음

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       // extract the link button 
       LinkButton lnkViewMap = (LinkButton)e.Row.FindControl("lnkViewMap"); 

       // grab the datarowview 
       System.Data.DataRowView row = (System.Data.DataRowView)e.Row.DataItem; 

       // set the onclientclick to fire our showMap javascript function, 
       // passing through the lat/longs 
       lnkViewMap.OnClientClick = string.Format("showMap({0}, {1}); return false;", row["Lat"], row["Long"]); 
      } 
     } 

내 오류가 나는에 e.Row.DataItem을 캐스팅하고 여기서 발생 DataRowView. 위의 코드는 Matt Berseth의 Virtual Earth에 대한 멋진 블로그에서 가져온 것입니다 ... 제가 여기서 구현하려고하는 것입니다. 어떤 아이디어?

답변

2

디버거에서 중단 점을 설정하고 e.Row.DataItem의 실제 유형을 확인하십시오.

격자에 설정하려는 DataSourceDataView 또는 DataTable 인 경우에만 DataRowView이됩니다. 그렇지 않으면 컬렉션의 요소 유형이됩니다.

+0

그랬습니다 ... DataItem을 요소 유형에 캐스팅 한 다음 일반 표기법을 사용하여 속성에 액세스 했으므로 ... 감사합니다! – Webjedi

+0

NP .. DataRowViews를 사용하는 것보다 더 좋은 방법입니다! 강력한 형식의 데이터 바인딩 FTW – Brannon

관련 문제