获取IListSource在ASP.NET中不包含任何数据源异常

时间:2010-12-21 10:05:16

标签: c# asp.net listview binding

我正在尝试将ListView控件绑定到DataSet类型中包含的数据。 我还介绍了通过DataPager类型的分页。

在第一次调用DataBind时,绑定完美发生。 但是,当我单击Next以检索下一组结果时,即使我的函数返回相应的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.DataSource = getSubSet(newIndex, resultSet, pageSize);
LV.DataBind();

其中LV是.aspx页面中的ListView控件。在分页期间的第二次调用返回异常。

请帮忙!谢谢!

1 个答案:

答案 0 :(得分:0)

在第二次执行方法时(在分页时),您确定传递给getSubSet方法的rsesultSet参数不为空吗?调试代码以查看返回的ds是否包含数据。

如果要简化和减少代码,请使用SqlDataSource(而不是手动绑定),并通过DataSourceID将其直接分配给LV。