我正在尝试过滤以datalist打印的数据源中的数据。我知道如何使用datalist并且没有问题。问题在于过滤。
我试过了:
DataSet ds = (DataSet)Application["Products"];
DataSet newDS = new DataSet();
newDS.Tables.Add("products");
DataRow[] DR = ds.Tables[0].Select("CategoryID='" + this.CategoryID + "'");
for (int i = 0; i < DR.Length; i++)
newDS.Tables[0].ImportRow(DR[i]);
PagedDataSource PDS = new PagedDataSource();
PDS.DataSource = newDS.Tables[0].DefaultView;
PDS.AllowPaging = true;
PDS.PageSize = 9;
PDS.CurrentPageIndex = CurrentPage;
this.DataList_Products.DataSource = PDS;
this.DataList_Products.DataBind();
之后我收到了这个问题:
DataBinding:'System.Data.DataRowView'不包含名为'ProductID'的属性。
我有一个名为ProductID的属性,我该如何解决这个问题呢?
答案 0 :(得分:1)
也许我错过了一些东西,但看起来你的代码比你需要的多得多。此外,你应该利用LINQ:
this.DataList_Products.DataSource = ds.Tables[0].AsEnumerable().Where(r => r.Field<int>("CategoryID") == this.CategoryID).AsDataView().ToTable();
this.DataList_Products.DataBind();
答案 1 :(得分:0)
新数据集(及其数据表)没有原始数据集的结构。
DataSet ds = (DataSet)Application["Products"];
DataSet newDS = new DataSet();
DataTable newTable = ds.Tables[0].Clone();//this copies the structure
newDS.Tables.Add(newTable);