如何在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,它是工作的,我的意思是我可以直接从哈希集值填充网格。然而,我试图使嵌套网格视图因此使用项目模板。
仅仅因为您将变量命名为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
,因为它包含多个)