公司网站改版,使用了.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和一个文本框,...
在Windows编程领域,MFC(Microsoft Foundation Classes)库提供了一系列的控件,使得开发者能够创建出功能丰富的用户界面。在本项目中,我们关注的是"树形控件(CTreeCtrl)"和"列表控件(CListCtrl)"的结合使用。...
总的来说,这个压缩包提供了一个强大的工具,帮助PB开发者更高效地构建数据查询功能,减少了重复劳动,提高了软件质量。通过深入理解和使用“dw_adv.pbl”中的控件,开发者可以更好地满足业务需求,同时优化应用的...
标题中的“MFC可编辑列表框控件”指的是在MFC应用中,我们对标准的CListBox类进行了扩展,以允许用户不仅可以查看列表项,还可以直接在列表框内编辑这些项的值。这种功能通常通过创建自定义控件或者利用CListCtrl类...
这样,即使列表包含数百万条记录,系统也只需要处理屏幕上可见的几行,大大减少了内存占用和计算资源的需求。 1. **大数据量**:当一个应用程序需要显示的数据量超过屏幕可容纳的范围时,就会面临性能问题。传统的...
该“通用型带CheckBox的ComboBox下拉框控件”是针对ComboBox的扩展,它在下拉列表中的每一项都添加了一个CheckBox,允许用户多选或者单选。这种设计适用于那些需要用户在多个选项中进行选择的情况,比如设置偏好、...
在本案例中,这个用户控件被设计成一个弹出窗口,可能包含了标题、内容区域、关闭按钮等基本组件。 弹出窗口的实现通常涉及到Window类或者Popup类。Window是WPF中的顶级窗口,它可以独立显示并拥有自己的生命周期。...
例如,我们可以添加一个DataGrid控件到ComboBox的下拉部分,这样当用户展开ComboBox时,会看到一个可滚动的数据表格,而非传统的列表项。DataGrid非常适合显示多列数据,允许用户对行进行排序、筛选和编辑。 同时,...
"C#自定义控件库"是指使用C#语言编写的、由开发者自定义的控件集合,这些控件可以扩展.NET Framework的标准控件集,为用户提供更丰富的界面元素和功能。自定义控件是软件开发中的一个重要环节,特别是在UI设计和用户...
6. **封装与重用**:开发者只需对这个增强的列表控件进行适当的封装,就能轻松地将其整合到自己的项目中,减少了重复开发的工作量,提高了开发效率。 源代码的提供使得开发者可以查看并学习其内部实现,这对于深入...
标题中的“用于网络会议系统,聊天系统的视频语音控件”是指一种专为在线通信平台设计的软件组件,它集成了视频和音频功能,使得用户能够通过互联网进行实时的音视频交流。这种控件通常由开发者使用编程语言如C#来...
在MFC(Microsoft Foundation Classes)框架中,我们经常需要创建具有特定功能的用户界面控件。本主题将详细探讨如何实现一个带下拉选择列表的按钮控件,这是一个结合了按钮和列表框功能的自定义控件。这个控件通常...
而这个项目则通过自定义绘制,直接在画布上绘制每个好友列表项,减少了控件间的交互和重绘,确保了无迟延无闪烁的效果,提升了用户体验。 要实现这样的功能,开发者需要深入理解Windows API或者图形用户界面框架...
标题“LABVIEW美化控件”暗示了这个压缩包可能包含一系列经过设计和优化的自定义控件,这些控件可能具有独特的外观或增加了特定的功能,以提升LabVIEW应用的用户体验和视觉效果。在LabVIEW中,自定义控件分为两种...
详细介绍 看些的博客 http://blog.csdn.net/crystal_lz/article/details/8170491 顺便希望有人能解决一下博客中提到的TypeConverter的问题!、、
给出了关于VC/MFC高级控件编程的各种编程实例(21个实例),包含了所能遇到的大部分高级控件的编程资料,比如列表控件 ActiveX控件开发 日期和动画控件 IP地址控件 等等一些列控件的编程方法,很值得下载,(本资源...
首先,我们要了解Android中的时间选择通常通过DatePicker控件来完成,但默认的DatePicker会展示日、月、年的全部选项,而这个通用版的控件则只显示年月部分,简化了用户的选择流程,更适合那些只需要选择年月而不...
1. 创建一个用户控件,包含新闻标题或内容。 2. 在用户控件中添加拖动功能,处理鼠标事件。 3. 在主窗体中嵌套多个这样的用户控件,形成一个新闻列表。 4. 将新闻内容放入ScrollViewer,设置滚动属性。 5. 使用...
本篇将详细介绍三个常用的控件:树形控件(Tree View Control)、列表控件(List Control)以及列表框控件(ListBox Control),并提供具体的实现案例。 首先,我们来看树形控件节点的图标效果。树形控件是一种层次...
在Microsoft Foundation Class (MFC)库中,列表控件(ListControl)是一种常用的数据展示组件,它允许用户以表格形式查看和操作数据。本资源提供的"列表控件(ListControl)扩展类集合"包含了10多种不同的类,这些类针对...