gpt4 book ai didi

c# - 我可以只输出数据表中值的第一个实例吗?

转载 作者:太空宇宙 更新时间:2023-11-03 11:38:34 24 4
gpt4 key购买 nike

是否可以只输出存储在数据表中的值的第一个实例?

我的示例是这样 = 我有一个数据表,其中每一行都包含月份的名称。该表按月升序排列。我只想在表格中第一次出现时输出月份的名称 - 如果月份有五个条目,则文本“January”只需要输出一次。

我正在使用转发器 - 下面的代码。 Month 中的值只有在与上一行中的值不同时才应更改。

<asp:Repeater ID="rptEvents" runat="server">
<ItemTemplate>
<h5><%#Eval("Month")%></h5>
<p>
<strong><asp:HyperLink ID="hlEvents" runat="server" Text='<%#Eval("Title") %>' NavigateUrl='<%#Eval("QuickLink") %>'></asp:HyperLink></strong><br />
<%#Eval("Date") %><br />
<%#Eval("Description") %>
</p>
</ItemTemplate>
</asp:Repeater>

最佳答案

我建议有 2 个中继器。外部将绑定(bind)到月份列表,内部将绑定(bind)月份内的所有条目:

<asp:Repeater ID="MonthList" runat="server" OnItemDataBound="MonthList_ItemDataBound">
<ItemTemplate>
<h2><%# Container.DataItem %></h2>
<asp:Repeater ID="ItemList" runat="server">
<ItemTemplate><%# Eval("Name") %></ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>

对于此标记代码,后面可能如下所示:

public partial class _Default : System.Web.UI.Page
{
public class Entry
{
public string Month {get;set;}
public string Name {get;set;}
}

List<Entry> entries = new List<Entry>()
{
new Entry() { Month = "Jan", Name = "name1"},
new Entry() { Month = "Jan", Name = "name2"},
new Entry() { Month = "Feb", Name = "name3"},
new Entry() { Month = "Aug", Name = "name4"},
new Entry() { Month = "Dec", Name = "name5"},
new Entry() { Month = "Dec", Name = "name6"}
};

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
MonthList.DataSource = entries.GroupBy(x => x.Month).Select(x => x.Key);
MonthList.DataBind();
}
}

protected void MonthList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var itemList = (Repeater)e.Item.FindControl("ItemList");
var month = (string)e.Item.DataItem;
itemList.DataSource = entries.Where(x => x.Month == month);
itemList.DataBind();
}
}
}

我对示例使用了内存中集合,并使用 Linq 对其进行了转换。首先,我们按月份对数据源进行分组。然后,在 MonthList_ItemDataBound 中,对于每个被绑定(bind)的月份,我们寻找内部转发器并将其与按当前 (DataItem) 月份过滤的集合绑定(bind)。希望这会有所帮助。

关于c# - 我可以只输出数据表中值的第一个实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5482292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com