一条数据通常是显示名字,传值时传ID,来对这条数据进行操作。比如:
这些内容都是从数据库中动态查出来显示的。新闻分类超链接一点击,就会跳到相应的新闻分类下的新闻。新闻标题也是超链接,一点击就会跳到相应的新闻。
新闻分类是一个循环,可以用repeater控件,最新新闻用的是girdview控件。在此展示一下前端的代码(在此博客中,我用//来注释说明。因为HTML的注释标记比较麻烦。)。
新闻分类:
<asp:Repeater ID="repCategory" runat="server"> //repeater控件
<ItemTemplate> //项目模版
<li><a href='list.aspx?caid=<%# Eval("id") %>'><%# Eval("name") %></a></li> //href为超链接,?为传的id,
必须跟数据库保持一致。<%# Eval("id")%>绑定方法,后面那个绑定name在超链接的文字中显示出来。
</ItemTemplate>
最新新闻:
<asp:GridView ID="gvNewNews" runat="server" AutoGenerateColumns="False" BorderWidth="0">
<Columns> //行
<asp:TemplateField HeaderText="所属类别" HeaderStyle-CssClass="th_category"> //相当于表格的表头,给他设置一个th-category样式
<ItemTemplate> //项模版
<a class="td_category" href='list.aspx?caid=<%# Eval("caid") %>'>[<%# Eval("name") %>]</a>
//caid为主键,超链接传的值,name是超链接显示的内容
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="新闻标题">
<ItemTemplate>
<a href='content.aspx?newsid=<%# Eval("id") %>' target="_blank" title='<%# Eval("title") %>'>
//两个双引号嵌套时,外面的那个要变成单引号。
<%# StringTruncat( Eval("title").ToString(), 18, "...") %></a>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="发布时间" HeaderStyle-CssClass="th_time" ItemStyle-CssClass="td_time">
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("createTime") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
开头的那张图片,大家注意到没有?新闻标题如果过长的话,就会到一定长度,就把后面的内容用...代替,但是鼠标放上去就会出现一个完整的标题提示,好多网页都是这样的。因为,如果不是这样,那么,标题过长就会把表格撑的变长或者到了下一行,这样网页布局就被打乱了,这在做网页中是绝对禁止的。
后台代码:
/// <summary>
/// .NET截取指定长度汉字超出部分以"..."代替
/// </summary>
/// <param name="oldStr"></param>
/// <param name="maxLength"></param>
/// <param name="endWith"></param>
/// <returns></returns>
public static string StringTruncat(string oldStr, int maxLength, string endWith)
{
if (string.IsNullOrEmpty(oldStr))
// throw new NullReferenceException( "原字符串不能为空 ");
return oldStr + endWith;
if (maxLength < 1)
throw new Exception("返回的字符串长度必须大于0 ");
if (oldStr.Length > maxLength)
{
string strTmp = oldStr.Substring(0, maxLength);
if (string.IsNullOrEmpty(endWith))
return strTmp;
else
return strTmp + endWith;
}
return oldStr;
}
前台代码:
<ItemTemplate>
<a href='content.aspx?newsid=<%# Eval("id") %>' target="_blank" title='<%# Eval("title") %>'>
<%# StringTruncat( Eval("title").ToString(), 18, "...") %></a>
</ItemTemplate>
//target="_blank"定向到一个空白网页,就是打开了一个新的网页
//title='<%# Eval("title")鼠标放超链接上去,会有title的完整提示
//StringTruncat( Eval("title").ToString(), 18, "...") 调用后台方法,超过18个字符就用...代替