嵌套的Repeater在Parent上不同

时间:2014-08-19 13:27:38

标签: c# linq repeater

我看了一堆例子,我坚持这个问题......

数据

CategoryId  OptionId    CategoryName    OptionName
    1          2           Type            Black & White
    1          3           Type            Color
    2          4           Print Speed     Less than 21 ppm
    2          5           Print Speed     21-30 ppm
    2          6           Print Speed     31-45 ppm
    2          7           Print Speed     46-55 ppm
    2          8           Print Speed     56-70 ppm
    2          10          Print Speed     71 plus ppm
    3          11          Software        3.5
    3          12          Software        4
    4          13          User Interface  7" Touch-Screen
    4          14          User Interface  8.5" Touch-Screen
    4          15          User Interface  10.1" Touch-Screen
    4          16          User Interface  15.4" Touch-Screen

我希望父转发器在CategoryName上做区别,但是当我这样做时,我没有得到嵌套转发器中的所有OptionNames。我正在使用dataTable来填充父转发器。我尝试过linq和distinct,它会正确地显示类别名称和选项,但我需要在嵌套转发器中使用ID ...

我正在使用这个示例 - Databind repeater using Linq with group by如何更改linq以包含更多字段,我对Linq不是很熟悉。

Parent Repeater Databind
    Repeater1.DataSource = (from x in csvData.AsEnumerable() select x["category"]).Distinct();

Nested Repeater Databind
    rptr.DataSource = csvData.AsEnumerable().Where(x => x["category"].Equals(e.Item.DataItem));

1 个答案:

答案 0 :(得分:0)

var output = catOptData.AsEnumerable()
                            .Select(x => new { CategoryId = x["CategoryId"], CategoryName = x["CategoryName"] })
                            .Distinct();

为父母和嵌套我做了吗

rptr.DataSource = catOptData.AsEnumerable().Where(x => x["CategoryName"].Equals(DataBinder.Eval(e.Item.DataItem, "CategoryName").ToString())).AsDataView();