2010-12-21 6 views
0

ListViewコントロールをDataSet型に含まれるデータにバインドしようとしています。 私はDataPagerタイプでページングを導入しました。IListSourceの取得にASP.NETのデータソース例外が含まれていません

DataBindへの最初の呼び出しでは、バインドが完全に行われます。 しかし、次の結果セットを取得するために[次へ]をクリックすると、関数が適切なデータセットを返してもバインドできません。

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(); 

時に。ページング中に2番目の呼び出しで例外が返されます。

助けてください!ありがとう!

答えて

0

getSubSetメソッドに渡されたrsesultSetパラメータが、メソッドが(ページング時に)2回目に実行されたときに空ではないことを確認してください。コードをデバッグして、返されたdsにデータが含まれているかどうかを確認します。

コードを簡素化して減らしたい場合は、SqlDataSource(手でバインドする代わりに)を使用し、DataSourceID経由でLVに直接割り当てます。

+0

はい、確認しましたが、getSubSetによって返されたDataSetは空ではなく、有効なデータを含んでいます。また、私はWebサービスを使用してDataSet形式のデータを返すため、SqlDataSourceを使用することはできません。 – Kaniks

関連する問題