`
lonestone
  • 浏览: 90462 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

通用新闻文章系统标题列表用户控件,大大减少重复劳动

阅读更多

公司网站改版,使用了.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 = "&nbsp;&nbsp;[{y}/{m}/{d}]";//时间格式化字符串
private bool displayHits = false;//是否显示点击次数
private string hitsFormatString = "&nbsp;({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>";
}
}
}

分享到:
评论

相关推荐

    C#WinForm用户控件间相互传值

    本小程序主要展示WinForm用户控件的使用及相互之间的通信,这里主要是通过事件进行实现的,第一个用户控件:(UCForm1.cs)主要包含一个文本框,第二个用户控件:(UCForm2.cs)包含了一个DataGridView和一个文本框,...

    通用控件 测试需求 测试用例 常用功能点

    通用控件 测试需求分析 常用功能点 测试用例 文本框、下拉框、查询、导出等通用功能测试用例分析

    Qt 列表添加combo下拉控件

    在QTableView 中添加Combo控件,实现列表中的下拉选择控件,在Qt中Demo有了编辑框和spin的列表控件,我在demo中spin的工程中添加了combo,实现列表中的combo下拉选择控件,其他的控件也可以参考此方法开发,新加的为...

    CustomTitleBar, 【通用标题栏】通用Android标题栏控件 A Common Titlebar For Android.zip

    CustomTitleBar, 【通用标题栏】通用Android标题栏控件 A Common Titlebar For Android

    树形控件和列表控件的结合

    C/C++ MFC CListCtrl列表控件和CTreeCtrl树控件的完美结合,对话框模式的完整程序,有VC6.0 VS2008,VS2010的工程文件

    在工具栏上添加通用控件

    在工具栏上添加通用控件 在工具栏上添加通用控件 在工具栏上添加通用控件

    VC编程实现使用树形控件和列表控件显示系统的资源列表

    VC编程实现使用树形控件和列表控件显示系统的资源列表,适合初学者

    C#控件常用属性方法

    c#常用控件的属性方法, 1、窗体 2、Label 控件 3、TextBox 控件 4、RichTextBox控件 5、...22、用户自定义对话框 23、菜单控件 24、多窗体程序设计 25、MDI 应用程序设计 26、键盘事件处理 27、鼠标事件处理

    动态增加和删除多个web用户控件

    动态增加和删除多个web用户控件,ASP.NET 2.0,很旧了的,还是有不少人给我发邮件,有兴趣的同学可以看看。

    c# winform usercontrol用户控件传值

    c# winform form页面点击按钮弹出用户控件,选择用户控件中的值并且赋给form页面上的控件

    通用摄像头控件

    利用windows系统资源,写的一个通用的摄像头画面显示控件,基于标准的TPanel控件开发,用法简单。只要你的摄像头安装上了驱动即可。

    VC TreeList树形列表控件.zip

    它是一个列表的树控件。 以下是许多功能中的一些:CTreeListCtrl 兼容CTreeCtrl &CListCtrl 标题拖放 拖放在 CTreeListCtrl 透明拖拉窗口与Alpha混合 列表的双色 背景图 复选框支持 锁box支持 嵌入式...

    Android自定义控件-常用标题栏

    现在我们公司得app都是差不多得title,所以抽时间自己撸了个常用得标题栏控件,直接在布局中使用。 不过本人还是推荐使用官方toolbar 等官方 新控件 ,效果太炫了。无奈设计要求这样,所以在这个公司干,为了开发...

    MFC获取系统的进程及列表控件使用

    MFC获取系统的进程及列表控件使用

    ASP—单元五 物业管理系统用户登录—用户控件.pdf

    在“职苑物业管理系统”中,有多处都出现了用户登录界面,为了使网站中风络统一,同时减少编写代码的重复劳动,采用了用户控件的方式来实现这个功能。

    语音通信控件通用版

    VSession语音通信控件通用版集成G729A压缩算法,实时传输协议,支持一对一(点对点),一对多(广播式),多对多(会议式)的实时通话,话音清晰流畅!使用简单方便!如果你只需要进行点对点的通话,你也可以到天空...

    MFC可编辑列表框控件

    扩展了MFC列表框控件功能,使得列表框控件中的值可以编辑

    VS2013 C#自定义用户控件学习

    使用 VS2013 模仿网络上的文章进行自定义控件开发代码。 1. 项目的整个文件目录名称都必须是英文的,否则测试和编译的时候,系统会报告莫名其妙的错误。 2. 自定义控件(部件)的名称必须是英文的,否则测试和编译的...

    VC 树状控件和列表控件的使用

    程序源码 VC 树状控件和列表控件的使用 包括9种最常见使用 1)文件拖拽 2)按数据库记录构建树控件 3)无闪烁背景位图的树型控件 4)... ... 资源来自互联网

    C#用户控件创建与使用

    C#用户控件创建与使用 适合初学者,一个简单的可伸缩图片面板。 条例清晰地显示了用户控件的创建,属性值,等用法。

Global site tag (gtag.js) - Google Analytics