web.config
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</controls>
</pages>
<httpHandlers>
<remove verb="*" path="*.asmx" />
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
<!--上传文件,上传文件的上限提高至20MB-->
<httpRuntime useFullyQualifiedRedirectUrl="true" executionTimeout="240" maxRequestLength="20480">
</httpRuntime>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5" />
<providerOption name="WarnAsError" value="false" />
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5" />
<providerOption name="OptionInfer" value="true" />
<providerOption name="WarnAsError" value="false" />
</compiler>
</compilers>
</system.codedom>
<!--
在 Internet 信息服务 7.0 下运行 ASP.NET AJAX 需要 system.webServer
节。对早期版本的 IIS 来说则不需要此节。
-->
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<remove name="ScriptModule" />
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated" />
<remove name="ScriptHandlerFactory" />
<remove name="ScriptHandlerFactoryAppServices" />
<remove name="ScriptResource" />
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</handlers>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
>>>>> ymdModel
tbNews.cs
namespace Ymd.ymdModel
{
/*
tbNews
-----------------------------
n_id(编号) PK
n_title(标题) String
n_count(浏览次数) Integer
n_content(内容) String
n_addtime(添加时间) Date
*/
public class tbNews
{
private int n_id;
private string n_title;
private int n_count;
private string n_content;
private DateTime n_addtime;
public tbNews()
{
}
public tbNews(int n_id,string n_title,int n_count,string n_content,DateTime n_addtime)
{
this.n_id = n_id;
this.n_title = n_title;
this.n_content = n_content;
this.n_addtime = n_addtime;
}
//编号
public int N_id
{
get { return n_id; }
set { n_id = value; }
}
//标题
public string N_title
{
get { return n_title; }
set { n_title = value; }
}
//浏览次数
public int N_count
{
get { return n_count; }
set { n_count = value; }
}
//内容
public string N_content
{
get { return n_content; }
set { n_content = value; }
}
//添加时间
public DateTime N_addtime
{
get { return n_addtime; }
set { n_addtime = value; }
}
}
}
>>>>> DALFactory
DataAcess.cs
namespace Ymd.DALFactory
{
public sealed class DataAcess
{
private static readonly string path = System.Configuration.ConfigurationManager.AppSettings["WebDal"];
public static ItbQQ CreateQQ()
{
string className = path + ".QQ";
return (ItbQQ)Assembly.Load(path).CreateInstance(className);
}
public static ItbVideo CreateVideo()
{
string className = path + ".Video";
return (ItbVideo)Assembly.Load(path).CreateInstance(className);
}
public static ItbYsxm CreateYsxm()
{
string className = path + ".Ysxm";
return (ItbYsxm)Assembly.Load(path).CreateInstance(className);
}
public static ItbJmzc CreateJmzc()
{
string className = path + ".Jmzc";
return (ItbJmzc)Assembly.Load(path).CreateInstance(className);
}
public static ItbYsxmfl CreateYsxmfl()
{
string className = path + ".Ysxmfl";
return (ItbYsxmfl)Assembly.Load(path).CreateInstance(className);
}
public static IYsg CreateYsg()
{
string className = path + ".Ysg";
return (IYsg)Assembly.Load(path).CreateInstance(className);
}
public static IAdminUsers CreateAdminUsers()
{
string className = path + ".AdminUsers";
return (IAdminUsers)Assembly.Load(path).CreateInstance(className);
}
public static INews CreateNews()
{
string className = path + ".News";
return (INews)Assembly.Load(path).CreateInstance(className);
}
}
}
>>>>> DBUtility
SqlHelper.cs
namespace Ymd.DBUtility
{
/// <summary>
/// 数据库的通用访问代码
/// 此类为抽象类,不允许实例化,在应用时直接调用即可
/// </summary>
public abstract class SqlHelper
{
//获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直接使用,但不能修改
//public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["YmdConnStr"].ConnectionString;
public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.AppSettings["YmdConnStr"].ToString();
// 哈希表用来存储缓存的参数信息,哈希表可以存储任意类型的参数
//如果没有任何线程在读取Hashtable,则Synchronized支持使用多个写入线程。
//如果使用一个或多个读取器以及一个或多个编写器,则同步包装不提供线程安全的访问。
//基本上就是为了应付高并发访问
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
///<summary>
///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。
/// 使用参数数组形式提供参数列表
/// </summary>
/// <remarks>
/// 使用示例:
/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure,
/// "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">一个有效的数据库连接字符串</param>
/// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// </param>
/// <param name="commandText">存储过程的名字或者 T-SQL 语句</param>
/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表
/// </param>
/// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
/// </summary>
public static int ExecuteNonQuery(string connectionString, CommandType cmdType,
string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connectionString))
{
//通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
//清空SqlCommand中的参数列表
cmd.Parameters.Clear();
return val;
}
}
///<summary>
///执行一条不返回结果的SqlCommand,通过一个已经存在的数据库连接
/// 使用参数数组提供参数
/// </summary>
/// <remarks>
/// 使用示例:
/// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure,
/// "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="conn">一个现有的数据库连接</param>
/// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// </param>
/// <param name="commandText">存储过程的名字或者 T-SQL 语句</param>
/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表
/// </param>
/// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
/// </summary>
public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
///<summary>
/// 执行一条不返回结果的SqlCommand,通过一个已经存在的数据库事物处理
/// 使用参数数组提供参数
/// </summary>
/// <remarks>
/// 使用示例:
/// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure,
/// "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="trans">一个存在的 sql 事物处理</param>
/// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// </param>
/// <param name="commandText">存储过程的名字或者 T-SQL 语句</param>
/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表
/// </param>
/// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
/// </summary>
public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
///<summary>
/// 执行一条返回结果集的SqlCommand命令,通过专用的连接字符串。
/// 使用参数数组提供参数
/// </summary>
/// <remarks>
/// 使用示例:
/// SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure,
/// "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">一个有效的数据库连接字符串</param>
/// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// </param>
/// <param name="commandText">存储过程的名字或者 T-SQL 语句</param>
/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表
/// </param>
/// <returns>返回一个包含结果的SqlDataReader</returns>
/// </summary>
public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
// 在这里使用try/catch处理是因为如果方法出现异常,则SqlDataReader就不存在,
//CommandBehavior.CloseConnection的语句就不会执行,触发的异常由catch捕获。
//关闭数据库连接,并通过throw再次引发捕捉到的异常。
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
///<summary>
/// 执行一条返回第一条记录第一列的SqlCommand命令,通过专用的连接字符串。
/// 使用参数数组提供参数
/// </summary>
/// <remarks>
/// 使用示例:
/// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure,
/// "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">一个有效的数据库连接字符串</param>
/// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// </param>
/// <param name="commandText">存储过程的名字或者 T-SQL 语句</param>
/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表
/// </param>
/// <returns>返回一个object类型的数据,可以通过 Convert.To{Type}方法转换类型</returns>
/// </summary>
public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection connection = new SqlConnection(connectionString))
{
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
}
///<summary>
/// 执行一条返回第一条记录第一列的SqlCommand命令,通过已经存在的数据库连接。
/// 使用参数数组提供参数
/// </summary>
/// <remarks>
/// 使用示例:
/// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure,
/// "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="conn">一个已经存在的数据库连接</param>
/// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// </param>
/// <param name="commandText">存储过程的名字或者 T-SQL 语句</param>
/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表
/// </param>
/// <returns>返回一个object类型的数据,可以通过 Convert.To{Type}方法转换类型
/// </returns>
/// </summary>
public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
///<summary>
/// 缓存参数数组
/// </summary>
/// <param name="cacheKey">参数缓存的键值</param>
/// <param name="cmdParms">被缓存的参数列表</param>
/// </summary>
public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters)
{
parmCache[cacheKey] = commandParameters;
}
///<summary>
/// 获取被缓存的参数
/// </summary>
/// <param name="cacheKey">用于查找参数的KEY值</param>
/// <returns>返回缓存的参数数组</returns>
/// </summary>
public static SqlParameter[] GetCachedParameters(string cacheKey)
{
SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];
if (cachedParms == null)
return null;
//新建一个参数的克隆列表
SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];
//通过循环为克隆参数列表赋值
for (int i = 0, j = cachedParms.Length; i < j; i++)
//使用clone方法复制参数列表中的参数
clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();
return clonedParms;
}
///<summary>
/// 为执行命令准备参数
/// </summary>
/// <param name="cmd">SqlCommand 命令</param>
/// <param name="conn">已经存在的数据库连接</param>
/// <param name="trans">数据库事物处理</param>
/// <param name="cmdType">SqlCommand命令类型 (存储过程,T-SQL语句,等等。) </param>
/// <param name="cmdText">Command text,T-SQL语句 例如 Select * from
/// Products</param>
/// <param name="cmdParms">返回带参数的命令</param>
/// </summary>
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[]
cmdParms)
{
//判断数据库连接状态
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
//判断是否需要事物处理
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = cmdType;
if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}
}
}
>>>>> IDAL
INews.cs
namespace Ymd.IDAL
{
public interface INews
{
/// <summary>
/// 删除新闻
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
int DelNew(string id);
/// <summary>
/// 绑定要修改的新闻
/// </summary>
/// <param name="id"></param>
IList<tbNews> BindEditNew(string id);
/// <summary>
/// 修改新闻
/// </summary>
/// <param name="title"></param>
/// <param name="content"></param>
/// <param name="dt"></param>
/// <returns></returns>
int EditNew(string title,string content, DateTime dt,string id);
/// <summary>
/// 添加新闻
/// </summary>
/// <param name="title"></param>
/// <param name="count"></param>
/// <param name="content"></param>
/// <param name="dt"></param>
/// <returns></returns>
int AddNew(string title, int count, string content, DateTime dt);
/// <summary>
/// 查询所有新闻
/// </summary>
/// <returns></returns>
IList<tbNews> GetNews();
}
}
>>>>> ymdDal
News.cs
namespace Ymd.ymdDal
{
public class News: INews
{
//删除新闻
private const string SQL_DEL_NEWS = "delete from tbNews where n_id=@id";
public int DelNew(string id)
{
SqlParameter[] para = { new SqlParameter("@id", SqlDbType.Int) };
para[0].Value = Convert.ToInt32(id);
int i = 0;
i = SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_DEL_NEWS, para);
return i;
}
//绑定要修改的新闻
private const string SQL_BIND_NEWS = "select * from tbNews where n_id=@id";
public IList<Ymd.ymdModel.tbNews> BindEditNew(string id)
{
IList<Ymd.ymdModel.tbNews> tbxw = new List<Ymd.ymdModel.tbNews>();
SqlParameter[] para = { new SqlParameter("@id",SqlDbType.Int)};
para[0].Value = Convert.ToInt32(id);
using (SqlDataReader sdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_BIND_NEWS, para))
{
if (sdr.Read())
{
Ymd.ymdModel.tbNews nw = new Ymd.ymdModel.tbNews(sdr.GetInt32(0), sdr.GetString(1), sdr.GetInt32(2), sdr.GetString(3), sdr.GetDateTime(4));
tbxw.Add(nw);
}
}
return tbxw;
}
//修改新闻
private const string SQL_UPDATE_NEWS = "update tbNews set n_title=@Title,n_content=@Content,n_addtime=@Time where n_id=@Id";
public int EditNew(string title, string content, DateTime dt,string id)
{
SqlParameter[] para = { new SqlParameter("@Title", SqlDbType.VarChar, 50), new SqlParameter("@Content", SqlDbType.VarChar, 1000), new SqlParameter("@Time", SqlDbType.DateTime),new SqlParameter("@Id",SqlDbType.Int)};
para[0].Value = title;
para[1].Value = content;
para[2].Value = dt;
para[3].Value = id;
int i = 0;
i = SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_UPDATE_NEWS, para);
return i;
}
//插入新闻
private const string SQL_INERT_NEWS = "insert into tbNews(n_title,n_count,n_content,n_addtime) values(@Title,@Count,@Content,@Time)";
public int AddNew(string title, int count, string content, DateTime dt)
{
SqlParameter[] para = { new SqlParameter("@Title", SqlDbType.VarChar, 50), new SqlParameter("@Count", SqlDbType.Int), new SqlParameter("@Content", SqlDbType.VarChar, 1000), new SqlParameter("@Time", SqlDbType.DateTime) };
para[0].Value = title;
para[1].Value = count;
para[2].Value = content;
para[3].Value = dt;
int i = 0;
i = SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_INERT_NEWS, para);
return i;
}
//查询新闻
private const string SQL_SELECT_NEWS = "select * from tbNews order by n_addtime desc";
public IList<Ymd.ymdModel.tbNews> GetNews()
{
IList<Ymd.ymdModel.tbNews> tbxw = new List<Ymd.ymdModel.tbNews>();
using (SqlConnection conn=new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = SQL_SELECT_NEWS;
using (SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
while (sdr.Read())
{
Ymd.ymdModel.tbNews nw = new Ymd.ymdModel.tbNews(sdr.GetInt32(0), sdr.GetString(1), sdr.GetInt32(2), sdr.GetString(3), sdr.GetDateTime(4));
tbxw.Add(nw);
}
}
}
return tbxw;
}
}
}
>>>>> ymdBLL
tbNews.cs
namespace Ymd.ymdBLL
{
public class tbNews
{
private static readonly INews dal = DataAcess.CreateNews();
public int DelNew(string id)
{
return dal.DelNew(id);
}
public IList<Ymd.ymdModel.tbNews> BindEditNew(string id)
{
return dal.BindEditNew(id);
}
public int EditNew(string title, string content, DateTime dt, string id)
{
return dal.EditNew(title, content, dt, id);
}
public int AddNew(string title, int count, string content, DateTime dt)
{
return dal.AddNew(title, count, content, dt);
}
public IList<Ymd.ymdModel.tbNews> GetNews()
{
return dal.GetNews();
}
}
}
>>>>> ymdWeb
mananews.aspx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<LINK href="css/admin.css" mce_href="css/admin.css" type="text/css" rel="stylesheet">
</head>
<body>
<form id="form1" runat="server">
<div>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center border=0>
<TR height=28>
<TD background=images/title_bg1.jpg> 当前位置>>管理新闻 </TD></TR>
<TR>
<TD bgColor=#b1ceef height=1></TD></TR>
<TR height=20>
<TD background=images/shadow_bg.jpg></TD></TR></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="95%" align=center border=0>
<TR height=20>
<TD></TD></TR>
<TR height=22>
<TD style="PADDING-LEFT: 20px; FONT-WEIGHT: bold; COLOR: #ffffff" mce_style="PADDING-LEFT: 20px; FONT-WEIGHT: bold; COLOR: #ffffff"
align=middle background=images/title_bg2.jpg>管理新闻</TD></TR>
<TR bgColor=#ecf4fc height=12>
<TD></TD></TR>
<TR height=20>
<TD></TD></TR></TABLE>
<TABLE cellSpacing=0 cellPadding=2 width="95%" align=center border=0>
<TR>
<TD height=40 align=center>
<asp:Repeater ID="RpNews" runat="server">
<HeaderTemplate>
<table width="98%" border="0" cellspacing="1" cellpadding="0" style=" background-color:#eeeeee;" mce_style=" background-color:#eeeeee;">
<thead>
<td bgcolor="white" style="height:30px;"><strong>编号</strong></td>
<td bgcolor="white"><strong>标题</strong></td>
<td bgcolor="white"><strong>添加时间</strong></td>
<td bgcolor="white">编辑</td>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td bgcolor="white"><%# Eval("n_id")%></td>
<td bgcolor="white"><%# Eval("n_title") %></td>
<td bgcolor="white"><%# Eval("n_addtime", "{0:yyyy-MM-dd}").ToString()%>
<td bgcolor="white"><a href='editnews.aspx?id=<%# Eval("n_id")%>'>修改</a>|<a onclick="javascript:{if(confirm('你确定要删除?')){return true;}return false;}" href='delnews.aspx?id=<%# Eval("n_id")%>'>删除</a></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</TD>
</TR>
</TABLE>
<div align="center" style=" padding-top:8px;" mce_style=" padding-top:8px;">
<hr style="size:2px; width:92%; color:#eeeeee;" />
<asp:Label ID="Lblms" runat="server" Text=" "></asp:Label>
<asp:HyperLink ID="HyFirstPage" runat="server">首页</asp:HyperLink>
<asp:HyperLink ID="HyPrePage" runat="server">上一页</asp:HyperLink>
<asp:HyperLink ID="HyNextPage" runat="server">下一页</asp:HyperLink>
<asp:HyperLink ID="HyLastPage" runat="server">尾页</asp:HyperLink>
</div>
</div>
</form>
</body>
</html>
mananews.aspx.cs
public partial class manage_mananews : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}
public void BindData()
{
Ymd.ymdBLL.tbNews tbn = new Ymd.ymdBLL.tbNews();
Ymd.DBUtility.CommonPager pg = new CommonPager();
pg.Fy(RpNews, Lblms, HyFirstPage, HyPrePage, HyNextPage, HyLastPage,tbn.GetNews(), 10);
//RpNews.DataSource = tbn.GetNews();
//RpNews.DataBind();
}
}
CommonPager.cs
namespace Ymd.DBUtility
{
public class CommonPager
{
/// <summary>
/// Repeater分页
/// </summary>
/// <param name="rp">Repeater控件</param>
/// <param name="lbms">分页描述</param>
/// <param name="first">首页</param>
/// <param name="pre">上一页</param>
/// <param name="next">下一页</param>
/// <param name="last">尾页</param>
/// <param name="list">数据源</param>
/// <param name="pagesize">每页显示多少条数据</param>
public void Fy(Repeater rp, Label lbms, HyperLink first, HyperLink pre, HyperLink next, HyperLink last,IEnumerable list, int pagesize)
{
PagedDataSource pds = new PagedDataSource();
pds.DataSource = list;
pds.AllowPaging = true;
pds.PageSize = pagesize;
int currentPage = 1;
if (HttpContext.Current.Request["page"] != null)
{
try
{
currentPage = Int32.Parse(HttpContext.Current.Request["page"].ToString());
}
catch(Exception ex)
{
currentPage = 1;
}
}
else
{
currentPage = 1;
}
pds.CurrentPageIndex = currentPage - 1;
lbms.Text = "第" + currentPage + "页, 共" + pds.PageCount + "页, 共" + pds.DataSourceCount.ToString() + "记录 ";
first.ToolTip = "跳转到首页";
first.NavigateUrl = HttpContext.Current.Request.CurrentExecutionFilePath + "?page=1";
pre.ToolTip = "跳转到上一页";
pre.NavigateUrl = HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + (currentPage - 1);
next.ToolTip = "跳转到下一页";
next.NavigateUrl = HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + (currentPage + 1);
last.ToolTip = "跳转到尾页";
last.NavigateUrl = HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + pds.PageCount.ToString();
if (currentPage <= 1 && pds.PageCount <= 1)
{
first.NavigateUrl = "";
pre.NavigateUrl = "";
next.NavigateUrl = "";
last.NavigateUrl = "";
}
if (currentPage <= 1 && pds.PageCount > 1)
{
first.NavigateUrl = "";
pre.NavigateUrl = "";
}
if (currentPage >= pds.PageCount)
{
next.NavigateUrl = "";
last.NavigateUrl = "";
}
rp.DataSource = pds;
rp.DataBind();
}
}
}
俺的新站,大家支持一下:http://www.pythonjc.com/