c# – 如何为ASP Repeater中的名称列表创建大写字母行
发布时间:2020-12-16 01:53:01 所属栏目:百科 来源:网络整理
导读:我正在使用asp转发器来显示名称列表,我想将当前字母显示为一种分组标题,就像在索引页面中一样. 数据在绑定之前按字母顺序排序,但我发现在显示名称之前很难插入“A”和“B”. 解决方法 将Panel控件添加到ItemTemplate,并将可见性设置为False.当您绑定转发器时
我正在使用asp转发器来显示名称列表,我想将当前字母显示为一种分组标题,就像在索引页面中一样.
数据在绑定之前按字母顺序排序,但我发现在显示名称之前很难插入“A”和“B”. 解决方法
将Panel控件添加到ItemTemplate,并将可见性设置为False.当您绑定转发器时(假设您正在订阅ItemDataBound事件),请运行检查以查看第一个字母是否已更改.如果有,请将面板的可见性设置为true并打印出该字母.
如果您需要一些示例代码,请告诉我. 编辑:示例代码 为了清楚起见,“AlphaHeaders”就是我们想要显示的“A”,“B”,“C”字母 aspx代码 Repeater看起来像这样: <table> <asp:Repeater id="rptRepeater" runat="server" OnItemDataBound="rptNames_OnItemDataBound"> <ItemTemplate> <asp:Panel id="pnlAlphaHeader" runat="server" visible="False"> <tr><td><asp:Label id="lblAlphaHeader" runat="server" /></td></tr> </asp:Panel> <tr><td><asp:Label id="lblName" runat="server" /></td></tr> </ItemTemplate> </asp:Repeater> </table> aspx.cs代码 首先,您需要一个包含当前AlphaHeader的变量: private string _AlphaHeaderCurrent = String.Empty; 然后你将在转发器的OnItemDataBound事件上做你的工作: protected void rptNames_OnItemDataBound(object sender,System.Web.UI.WebControls.RepeaterItemEventArgs e) { if ((e.ItemType==ListItemType.Item) || (e.ItemType==ListItemType.AlternatingItem)) { string name = e.Item.DataItem("Name").ToString(); //check if the first letter of the current name is new. If it is new,we print out the header if(!name.StartsWith(this._AlphaHeaderCurrent)) { this._AlphaHeaderCurrent = name.SubString(1); ((Panel)e.ItemFindControl("pnlAlphaHeader")).Visible = true; ((Label)e.Item.FindControl("lblAlphaHeader")).Text = the._AlphaHeader; } ((Label)e.Item.FindControl("lblName")).Text = name; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |