2010-12-21 3 views
0

ListView 컨트롤을 DataSet 형식의 데이터에 바인딩하려고합니다. 또한 DataPager 유형을 통해 페이징을 도입했습니다.IListSource 가져 오기 ASP.NET에서 데이터 원본 예외가 포함되어 있지 않습니다.

DataBind에 대한 첫 번째 호출에서 바인딩이 완벽하게 수행됩니다. 그러나 다음 결과 집합을 검색하기 위해 다음을 클릭하면 내 함수가 적절한 DataSet을 반환하더라도 바인딩을 수행 할 수 없습니다.

void getSubSet(int rowindex, DataSet resultSet, int pageSize) 
{ 
    DataSet ds = new DataSet(); 
    DataTable tb = new DataTable(); 
    for (int cols = 0; cols < resultSet.Tables[0].Columns.Count; cols++) 
    { 
    DataColumn dc = new DataColumn(resultSet.Tables[0].Columns[cols].ColumnName, 
              resultSet.Tables[0].Columns[cols].DataType); 
    tb.Columns.Add(dc); 
    } 
    for (int i = rowindex; ((i < resultSet.Tables[0].Rows.Count) && (i < rowindex + pageSize)); i++) 
    { 
    DataRow rowToBeAdded = resultSet.Tables[0].Rows[i]; 
    DataRow newRow; 
    newRow = tb.NewRow(); 
    for (int j = 0; j < resultSet.Tables[0].Columns.Count; j++) 
      newRow[j] = rowToBeAdded[j]; 
    tb.Rows.Add(newRow); 
    } 
    ds.Tables.Add(tb); 
    return ds; 
} 

DataSet resultSet에는 모든 결과가 포함됩니다.

위의 조각은, 하지만 LV는 .aspx 페이지에서 ListView 컨트롤입니다

LV.DataSource = getSubSet(newIndex, resultSet, pageSize); 
LV.DataBind(); 

에를 완벽하게 결과를 반환합니다. 페이징 중 두 번째 호출시 예외를 반환합니다.

도와주세요! 감사!

답변

0

getSubSet 메서드에 전달 된 rsesultSet 매개 변수가 메서드가 두 번 실행 (페이징 중) 될 때 비어 있지 않습니까? 코드를 디버그하여 반환 된 ds에 데이터가 있는지 확인하십시오.

코드를 단순화하고 줄이려면 SqlDataSource (직접 바인딩하는 대신)를 사용하고 DataSourceID를 통해 LV에 직접 할당하십시오.

+0

예, 확인했는데 getSubSet에 의해 반환 된 DataSet은 비어 있지 않으며 유효한 데이터를 포함합니다. 또한 웹 서비스를 사용하여 DataSet 형식의 데이터를 반환하므로 SqlDataSource를 사용할 수 없습니다. – Kaniks

관련 문제