如何在asp.net c#中将数据从Hashset绑定到ItemTemplate

本文关键字:数据 Hashset 绑定 ItemTemplate asp net | 更新日期: 2023-09-27 18:18:58

我在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方法有问题,我不认为它是从哈希集获取值。

有人能解释我如何从Hashste绑定到Eval的数据?

此外,如果我不使用ItemTemplate,它是工作的,我的意思是我可以直接从哈希集值填充网格。然而,我试图使嵌套网格视图因此使用项目模板。

如何在asp.net c#中将数据从Hashset绑定到ItemTemplate

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

仅仅因为您将变量命名为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();

但是,您正在尝试从Id设置布尔属性(Enabled)。这似乎是不正确的。

(请注意,我已将HashSet的名称从id更改为ids,因为它包含多个)