|
td id="1" class="ControlPanelTabInactive" align="center" nowrap> <a href="<%=Globals.GetSiteUrls().MyFavorites%>"><%=ResourceManager.GetString("MyFavorites_Title")%></a> </td> 修改: <td colspan=11 class="ControlPanelTabLine"><img width="1" height=1 alt=""></td>跨跃列数
五.增加相应文件
表现层1,收藏夹主视图 在web/user/目录增加MyFavorites.aspx,最终用户页面 在Controls\Views目录增加MyFavoritesView.cs,页面视图服务器控件(主要表现为页面处理逻辑) 界面视图:在Web\Themes\default\Skins中增加View-MyFavorites.ascx 收藏夹视图(主要表现为页面UI)
组件 在Components目录增加Favorites.cs(相当于业务逻辑层,加s表业务处理),此例中未在子目录Components/Components中增加Favorite.cs(相当于业务实体层,未加s表实体),因并不需要,完整的Asp.net forums模式应该还有这一层。
表现层2,用户点击收藏按钮后呈现的UI (这个比较简单) 在web目录增加MyFavoritesAdd.aspx文件 处理加入收藏时服务器控件, 在Controls目录增加MyFavoritesAdd.cs(页面处理逻辑) 在Web\Themes\default\Skins中增加Skin-MyFavoritesAdd.ascx将主题加入收藏时的视图(UI)
六.数据库 增加表forums_Favorites UserID int 4 0 ThreadID int 4 0 FavoriteDate datetime 8 0
创建存储过程forums_Favorites_CreateDelete CREATE procedure forums_Favorites_CreateDelete ( @UserID int, @ThreadID int, @Action int ) AS BEGIN
IF @Action = 0 BEGIN -- Does the user already have the ability to see this thread? IF EXISTS (SELECT UserID FROM forums_Favorites WHERE UserID = @UserID and ThreadID = @ThreadID) return
INSERT INTO forums_Favorites VALUES ( @UserID, @ThreadID, getdate() )
RETURN END
IF @Action = 2 BEGIN DELETE forums_Favorites WHERE UserID = @UserID AND ThreadID = @ThreadID RETURN END
END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
七.数据处理 1.Components\Provider\ForumsDataProvider.cs增加 #region 收藏夹 public abstract void CreateFavorites(ArrayList users, int threadID); public abstract void DeleteFavorites(int userID, ArrayList deleteList); #endregion 2. Data Providers\SqlDataProvider\SqlDataProvider.cs增加实现方法 #region #### 收藏夹 #### by venjiang 0912 /// <summary> /// 追加主题到收藏夹 /// </summary> /// <param name="userID">用户ID</param> /// <param name="threadID">主题ID</param> public override void CreateFavorites(int userID,int threadID) { using( SqlConnection myConnection = GetSqlConnection() ) { SqlCommand myCommand = new SqlCommand(databaseOwner + ".forums_Favorites_CreateDelete", myConnection); myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.Add("@Action", SqlDbType.Bit).Value = DataProviderAction.Create; myCommand.Parameters.Add("@UserID", SqlDbType.Int); myCommand.Parameters.Add("@ThreadID", SqlDbType.Int);
myConnection.Open(); myCommand.Parameters["@UserID"].Value = userID; myCommand.Parameters["@ThreadID"].Value = threadID;
myCommand.ExecuteNonQuery(); } } /// <summary> /// 从收藏夹中删除主题 /// </summary> /// <param name="userID">用户ID</param> /// <param name="deleteList">删除列表</param> public override void DeleteFavorites(int userID, ArrayList deleteList) {
// Create Instance of Connection and Command Object using( SqlConnection myConnection = GetSqlConnection() ) { SqlCommand myCommand = new SqlCommand(databaseOwner + ".forums_Favorites_CreateDelete", myConnection); myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.Add("@Action", SqlDbType.Int).Value = DataProviderAction.Delete; myCommand.Parameters.Add("@UserID", SqlDbType.Int).Value = userID; myCommand.Parameters.Add("@ThreadID", SqlDbType.Int);
// Open the connection myConnection.Open();
// Add multiple times // foreach (int threadID in deleteList) { myCommand.Parameters["@ThreadID"].Value = threadID;
myCommand.ExecuteNonQuery();
} } } #endregion 3.在Data Providers\SqlDataProvider\SqlDataProvider.cs修改GetThreads方法,以支持收藏功能 #region #### Threads #### // 增加贴子收藏 by venjiang 0911 public override ThreadSet GetThreads( int forumID, int pageIndex, int pageSize, int userID, DateTime threadsNewerThan, SortThreadsBy sortBy, & [1] [2] [3] [4] [5] [6] 下一页 [Web开发]一个关于ASP运行时间计算的代码 [Web开发]ASP:检测含有中文字符串的实际长度 [Web开发]asp 中英文字符长度检测判断函数 [Web开发]安全维护 IIS asp 站点的高级技巧 [C语言系列]NET 中C#的switch语句的语法 [Access]ASP&SQL让select查询结果随机排序的实现方法 [Web开发]ASP字符串截取函数 [Web开发][asp]关键词只替换一次的写法 [Web开发]Asp无组件生成缩略图方法详解 [Web开发]asp编程中优化数据库方法详解
|