0

我在 GridView 中创建了项目模板。

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" 
    CellPadding="3" GridLines="Horizontal" onrowdatabound="GridView1_RowDataBound" >
    <AlternatingRowStyle BackColor="#F7F7F7" />
    <Columns>
        <asp:TemplateField HeaderText="ID">
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Enabled='<%# Eval("id") %>' 
                    Text="Label"></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

现在我的问题是我将“id”存储在哈希集中,因为我有一些重复的 ID,我只想显示唯一的 ID

var id = new HashSet<String>();
id.Add("1");
id.Add("1");
id.Add("2");
id.Add("3");
id.Add("4");
id.Add("5");
Gridview1.DataSource=id;
Gridview1.DataBind();

我认为 Eval 方法有问题,我认为它没有从 Hashset 中获取价值。

有人可以解释一下如何将 Hashste 中的数据绑定到 Eval 吗?

此外,如果我使用 ItemTemplate,它就可以工作,我的意思是我可以直接从 Hashset 值填充 gridiew。但是,我正在尝试制作嵌套网格视图,因此使用项目模板。

如果您有任何问题,请告诉我。

4

1 回答 1

1

仅仅因为你命名了一个变量id,底层类型不包含一个属性id

您可以将匿名类型用作DataSource

var ids = new HashSet<String>();
ids.Add("1");
ids.Add("1");
ids.Add("2");
ids.Add("3");
ids.Add("4");
ids.Add("5");
Gridview1.DataSource = ids.Select(id => new { id }).ToList();
Gridview1.DataBind();

但是,您正在尝试EnabledId. 这似乎是不正确的。

(请注意,我已将 from 的名称更改为HashSetto idids因为它包含多个)

于 2013-06-18T14:48:04.680 回答