DataTable.Select в качестве источника данных DataList - PullRequest
1 голос
/ 03 апреля 2012

Я пытаюсь отфильтровать данные в моем источнике данных, который напечатан в списке данных. Я знаю, как использовать 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();

после этого я получил эту проблему:

Привязка данных: «System.Data.DataRowView» не содержит свойство с именем «ProductID».

У меня есть свойство, которое называется ProductID, как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Может быть, я что-то упустил, но, похоже, у вас гораздо больше кода, чем нужно. Кроме того, вы должны воспользоваться LINQ для этого:

this.DataList_Products.DataSource = ds.Tables[0].AsEnumerable().Where(r => r.Field<int>("CategoryID") == this.CategoryID).AsDataView().ToTable();
this.DataList_Products.DataBind();
0 голосов
/ 03 апреля 2012

Новый набор данных (и его данные) не имеет структуры исходного набора данных.

DataSet ds = (DataSet)Application["Products"];
DataSet newDS = new DataSet();
DataTable newTable = ds.Tables[0].Clone();//this copies the structure
newDS.Tables.Add(newTable);
...