我有一个a-z列表,我正在生成一个显示如下内容的栏:
a b c d e f g h i j k l m n ...... z
现在我显示一个存在于数据库中的字符作为示例,如果名称存在类似于此Alan
,那么我正在显示字符A
但是如果我没有名字的人以B
开头,那么它现在正在显示。
相反,我想显示B
即使你在db中不存在,我该怎么做?
这是我的代码:
List<char> HeaderOf = new List<char>();
protected void ListItem(List<Customer>.Enumerator cust)
{
if (cust.MoveNext())
{
Customer t = cust.Current;
string[] list = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "v", "z" };
var output = list.Aggregate("", (current, listitem) => current + (Environment.NewLine + "<h1 id='" + listitem.ToUpper() + "'><span>" + listitem.ToUpper() + "</span></h1>"));
char CheckMe = t.Name.Substring(0, 1).ToUpper()[0];
if (!HeaderOf.Contains(CheckMe))
{
HeaderOf.Add(CheckMe);
l = new Literal();
l.Text = "<h1 id='" + CheckMe + "'><span>" + CheckMe + "</span></h1>" + Environment.NewLine;
}
}
}
答案 0 :(得分:0)
更好地使用中继器控制:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<h1 id='<%# Container.DataItem.ToString() %>' ><span><%# Container.DataItem.ToString() %></span></h1>
</ItemTemplate>
</asp:Repeater>
private const string ABCString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Repeater1.DataSource = ABCString;
Repeater1.DataBind();
}
}
答案 1 :(得分:0)
创建一个通过客户枚举的功能会更容易。 然后另一个函数来构建文字以枚举字母数组
答案 2 :(得分:0)
我不太明白你的要求。为什么不在页面上显示字母A-Z。然后,当用户单击一个字母时,您将执行一个查询,该查询返回以该字母开头的人的姓名(如果这是您的意图)。