公司网站改版,使用了.net2.0,其中有大量的新闻文章系统的标题列表方式显示,算是最简单重复的劳动了,功能莫过于显示标题,截断标题,分类id,是否显示时间和点击次数等等,于是就构思着做了这个用户控件,使用很方便,只需要设置几个属性就可以工作了,不知道对你是否有价值呢?
ArticlesTitleList.ascx源代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ArticlesTitleList.ascx.cs" Inherits="UserControls_ArticlesTitleList" EnableViewState="false"%>
<asp:Repeater ID="Repeater1" runat="server" EnableViewState="False">
<HeaderTemplate><ul></HeaderTemplate>
<ItemTemplate>
<li><%# DataBinder.Eval(Container.DataItem, "TheTitle")%><%# DataBinder.Eval(Container.DataItem, "EndInfo")%></li>
</ItemTemplate>
<FooterTemplate></ul></FooterTemplate>
</asp:Repeater>
<asp:Literal ID="ltlMore" runat="server"></asp:Literal>
ArticlesTitleList.ascx.cs源代码:
(其中用到了一个自己编写的数据库操作类DataOperater ,可以替换为你自己的)
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using cnfdc;
public partial class UserControls_ArticlesTitleList : System.Web.UI.UserControl
{
private string classId = "0";//要显示的文章分类ID
private bool imgOnly = false;//是否是显示含有图片的文章
private string itemsCount = "10";//要显示的文章标题的数量
private string titleLength="0";//控制标题长度的数值,如设置为显示类别,则包括类别名称长度在内,0为全部显示
protected string detailsPagePrefix = string.Empty;//要链接到的文章详细页的页面地址,绝对根路径表示
private bool displayClassName = false;//是否在标题前显示类别文章入口,链接到该类别文章列表,string型,如果设为true,则需要同时指定分类文章列表的URL,绝对根路径表示
protected string articleListPageUrl = string.Empty;//分类文章列表页的URL,绝对根路径表示,配合DisplayClassName实现
private string orderType = "latest";//排序类型,分为最新latest、点击hits
private bool displayMore = false;//是否显示更多...链接
private string excludeID = "0";//要排除在外的id,以英文逗号分割
private bool displayTime = false;//是否在标题后显示时间
private string timeFormatString = " [{y}/{m}/{d}]";//时间格式化字符串
private bool displayHits = false;//是否显示点击次数
private string hitsFormatString = " ({hits}次)";//点击次数格式化字符串
#region 属性设置
public string ClassId
{
set
{
classId = value;
}
}
public bool ImgOnly
{
set
{
imgOnly = value;
}
}
public string ItemsCount
{
set
{
itemsCount = value;
}
}
public string TitleLength
{
set
{
titleLength = value;
}
}
public string DetailsPagePrefix
{
set
{
detailsPagePrefix = value;
}
}
public bool DisplayClassName
{
set
{
displayClassName = value;
}
}
public string ArticleListPageUrl
{
set
{
articleListPageUrl = value;
}
}
public string OrderType
{
set
{
orderType = value;
}
}
public bool DisplayMore
{
set
{
displayMore = value;
}
}
public string ExcludeID
{
set
{
excludeID = value;
}
}
public bool DisplayTime
{
set
{
displayTime = value;
}
}
public string TimeFormatString
{
set
{
timeFormatString = value;
}
}
public bool DisplayHits
{
set
{
displayHits = value;
}
}
public string HitsFormatString
{
set
{
hitsFormatString = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
DataOperater mydo = new DataOperater();
string sql = string.Empty;
if (displayClassName)
{
sql = "SELECT TOP " + itemsCount + " Articles_Table.id,Articles_Title,Click_Count,Articles_Type,Sort_First,Add_Time,typeName FROM Articles_Table,Articles_Type WHERE id NOT IN (" + excludeID + ") AND Verify_Status=1 AND Articles_Type.id=Articles_Table.Articles_Type AND Articles_Type=" + classId;
}
else
{
sql = "SELECT TOP " + itemsCount + " id,Articles_Title,Click_Count,Articles_Type,Sort_First,Add_Time FROM Articles_Table WHERE id NOT IN (" + excludeID + ") AND Verify_Status=1 AND Articles_Type=" + classId;
}
if (imgOnly)
{
sql = sql + "AND Has_Img = 1";
}
if (orderType == "latest")
{
sql = sql + "ORDER BY Add_Time DESC,Sort_First DESC";
}
else
{
sql = sql + "ORDER BY Click_Count DESC";
}
DataSet ds = mydo.DataSet(sql,"ArticlesTitleList");
//处理标题截断并加入时间显示和点击次数显示
DataColumn dc0 = new DataColumn("CuttedTitle");
dc0.DataType = System.Type.GetType("System.String");
dc0.DefaultValue = "";
ds.Tables["ArticlesTitleList"].Columns.Add(dc0);
DataColumn dc3 = new DataColumn("EndInfo");
dc3.DataType = System.Type.GetType("System.String");
dc3.DefaultValue = "";
ds.Tables["ArticlesTitleList"].Columns.Add(dc3);
for (int j = 0; j < ds.Tables["ArticlesTitleList"].Rows.Count; j++)
{
DataRow dr = ds.Tables["ArticlesTitleList"].Rows[j];
dr.BeginEdit();
if (titleLength == "0")//不截断
{
dr["CuttedTitle"] = dr["Articles_Title"].ToString();
}
else
{
int classNameLength = 0;
if (displayClassName)
{
classNameLength = LeftTrue.GetLength(dr["typeName"].ToString());
}
dr["CuttedTitle"] = LeftTrue.CutString(dr["Articles_Title"].ToString(), int.Parse(titleLength) - classNameLength);
}
//时间显示
if (displayTime)
{
string timeString = timeFormatString;
timeString = timeString.Replace("{y}", Convert.ToDateTime(dr["Add_Time"]).Year.ToString());
timeString = timeString.Replace("{m}", Convert.ToDateTime(dr["Add_Time"]).Month.ToString());
timeString = timeString.Replace("{d}", Convert.ToDateTime(dr["Add_Time"]).Day.ToString());
dr["EndInfo"] =dr["EndInfo"].ToString()+ timeString;
}
//点击次数显示
if (displayHits)
{
string hitString = hitsFormatString;
hitString = hitString.Replace("{hits}", dr["Click_Count"].ToString());
dr["EndInfo"] = dr["EndInfo"].ToString() + hitString;
}
dr.EndEdit();
}
//按照是否显示分类名和链接自定义标题列
DataColumn dc1 = new DataColumn("TheTitle");
dc1.DataType = System.Type.GetType("System.String");
dc1.DefaultValue = "";
ds.Tables["ArticlesTitleList"].Columns.Add(dc1);
//给每一行赋值
for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
{
DataRow dr = ds.Tables[0].Rows[j];
dr.BeginEdit();
if (!displayClassName)
{
dr["TheTitle"] = "<a title=\""+dr["Articles_Title"].ToString()+"\" href=\""
+ detailsPagePrefix + "_"
+ dr["id"].ToString() + ".html\" target=\"_blank\">" + dr["CuttedTitle"].ToString() + "</a>";
}
else
{
dr["TheTitle"] = "<a title=\"点击阅读更多该类资讯\" href=\"" + articleListPageUrl + "?ClassId="
+ dr["Articles_Type"].ToString() + "\" target=\"_blank\" >[" + dr["typeName"].ToString() + "]</a><a title=\""
+ dr["Articles_Title"].ToString() + "\" href=\"" + detailsPagePrefix + "?ArticelId="
+ dr["id"].ToString() + "\" target=\"_blank\">" + dr["CuttedTitle"].ToString() + "</a>";
}
dr.EndEdit();
}
Repeater1.DataSource = ds;
Repeater1.DataBind();
ds.Dispose();
mydo.CloseConnection();
if (displayMore)
{
ltlMore.Text = "<div align=\"right\"><a href=\"" + articleListPageUrl + "?ClassId=" + classId + "\" target=\"_blank\">+更多</a></div>";
}
}
}
分享到:
相关推荐
本小程序主要展示WinForm用户控件的使用及相互之间的通信,这里主要是通过事件进行实现的,第一个用户控件:(UCForm1.cs)主要包含一个文本框,第二个用户控件:(UCForm2.cs)包含了一个DataGridView和一个文本框,...
通用控件 测试需求分析 常用功能点 测试用例 文本框、下拉框、查询、导出等通用功能测试用例分析
在QTableView 中添加Combo控件,实现列表中的下拉选择控件,在Qt中Demo有了编辑框和spin的列表控件,我在demo中spin的工程中添加了combo,实现列表中的combo下拉选择控件,其他的控件也可以参考此方法开发,新加的为...
CustomTitleBar, 【通用标题栏】通用Android标题栏控件 A Common Titlebar For Android
C/C++ MFC CListCtrl列表控件和CTreeCtrl树控件的完美结合,对话框模式的完整程序,有VC6.0 VS2008,VS2010的工程文件
在工具栏上添加通用控件 在工具栏上添加通用控件 在工具栏上添加通用控件
VC编程实现使用树形控件和列表控件显示系统的资源列表,适合初学者
c#常用控件的属性方法, 1、窗体 2、Label 控件 3、TextBox 控件 4、RichTextBox控件 5、...22、用户自定义对话框 23、菜单控件 24、多窗体程序设计 25、MDI 应用程序设计 26、键盘事件处理 27、鼠标事件处理
动态增加和删除多个web用户控件,ASP.NET 2.0,很旧了的,还是有不少人给我发邮件,有兴趣的同学可以看看。
c# winform form页面点击按钮弹出用户控件,选择用户控件中的值并且赋给form页面上的控件
利用windows系统资源,写的一个通用的摄像头画面显示控件,基于标准的TPanel控件开发,用法简单。只要你的摄像头安装上了驱动即可。
它是一个列表的树控件。 以下是许多功能中的一些:CTreeListCtrl 兼容CTreeCtrl &CListCtrl 标题拖放 拖放在 CTreeListCtrl 透明拖拉窗口与Alpha混合 列表的双色 背景图 复选框支持 锁box支持 嵌入式...
现在我们公司得app都是差不多得title,所以抽时间自己撸了个常用得标题栏控件,直接在布局中使用。 不过本人还是推荐使用官方toolbar 等官方 新控件 ,效果太炫了。无奈设计要求这样,所以在这个公司干,为了开发...
MFC获取系统的进程及列表控件使用
在“职苑物业管理系统”中,有多处都出现了用户登录界面,为了使网站中风络统一,同时减少编写代码的重复劳动,采用了用户控件的方式来实现这个功能。
VSession语音通信控件通用版集成G729A压缩算法,实时传输协议,支持一对一(点对点),一对多(广播式),多对多(会议式)的实时通话,话音清晰流畅!使用简单方便!如果你只需要进行点对点的通话,你也可以到天空...
扩展了MFC列表框控件功能,使得列表框控件中的值可以编辑
使用 VS2013 模仿网络上的文章进行自定义控件开发代码。 1. 项目的整个文件目录名称都必须是英文的,否则测试和编译的时候,系统会报告莫名其妙的错误。 2. 自定义控件(部件)的名称必须是英文的,否则测试和编译的...
程序源码 VC 树状控件和列表控件的使用 包括9种最常见使用 1)文件拖拽 2)按数据库记录构建树控件 3)无闪烁背景位图的树型控件 4)... ... 资源来自互联网
C#用户控件创建与使用 适合初学者,一个简单的可伸缩图片面板。 条例清晰地显示了用户控件的创建,属性值,等用法。