做收藏遇到问题.docx_第1页
做收藏遇到问题.docx_第2页
做收藏遇到问题.docx_第3页
做收藏遇到问题.docx_第4页
做收藏遇到问题.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

收藏功能问题收藏的ALLItems页面用了Datalist做;因此没有系统自带分页,只能自己写分页功能;#region 这是收藏后台代码using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Web.Common;using System.Data;using System.Data.SqlClient;using System.Configuration;namespace Web.Collections.UserControl public partial class WUCGrid : BasedUserControl protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) ViewStatepageindex = 0; BindData(); private int _ArticleID; public int ArticleID get return _ArticleID; set _ArticleID=value; protected void lnkBtnTitle_Click(object sender, EventArgs e) LinkButton lnkBtnTitle = (LinkButton)sender; if (lnkBtnTitle != null) ArticleID = Convert.ToInt32( lnkBtnTitle.CommandArgument); /查询对应的ArticleID的ispublic是否为1;为公开; eSchool.JXKYW.Library.Articles articles = (from p in DataContext.Articles where p.ID.Equals(ArticleID) & p.IsPublic.Equals(1)&p.UsedFlag.Equals(1) select p).FirstOrDefault(); if (articles=null) throw new Exception(文章已被删除!); protected void dl_DataBinding(object sender, EventArgs e) /删除事件 protected void dl_DeleteCommand(object source, DataListCommandEventArgs e) int Key = Convert.ToInt32(dl.DataKeyse.Item.ItemIndex.ToString();/获取激发事件时的行的主键ID String conString = ConfigurationManager.ConnectionStringsJXKYWConnectionString.ConnectionString; String strSql = delete from Collections where ID= + Key + ; int rows = ExecuteSql(strSql, conString); BindData(); public int ExecuteSql(string strSql,string conString) using (SqlConnection myConnection=new SqlConnection(conString) using (SqlCommand cmd=new SqlCommand(strSql, myConnection) myConnection.Open(); int rows=cmd.ExecuteNonQuery(); return rows; #region DataList分页 public static DataSet GetTable(string sql) SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings JXKYWConnectionString.ConnectionString); SqlDataAdapter da = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); da.Fill(ds); return ds; public void BindData() string LoginName = this.CurrentLoginName; string sql = select * from vw_CollectionsArticles where CollectorName=+LoginName+; DataSet objds = GetTable(sql); PagedDataSource objPds = new PagedDataSource(); objPds.DataSource = objds.Tables0.DefaultView; objPds.AllowPaging = true; objPds.PageSize = 10; objPds.CurrentPageIndex = int.Parse(ViewStatepageindex.ToString(); if (!objPds.IsFirstPage) lkPre.Visible = true; else lkPre.Visible = false; if (!objPds.IsLastPage) lkNext.Visible = true; else lkNext.Visible = false; /如果没有找到数据就隐藏pnlNoArticle if (objPds.DataSourceCount 0) this.FindControl(pnlNoArticle).Visible = false; else this.FindControl(pnlNoArticle).Visible = true; dl.DataSource = objPds; dl.DataKeyField = ID; dl.DataBind(); /*上一页下一页的事件;I两个按钮的 OnCommand都是IndexChanging()函数,我们通过CommandArgument(pre和next)来区分到底是向前翻还是向后翻。下面是IndexChanging()函数*/ protected void IndexChanging(object sender, EventArgs e) string strCommand = (LinkButton)sender).CommandArgument.ToString();/得到linkbtn的CommandArgument值 int pageindex = int.Parse(ViewStatepageindex.ToString(); if (strCommand = pre) pageindex = pageindex - 1; else pageindex = pageindex + 1; ViewStatepageindex = pageindex; BindData(); #endregion private string _AuthorName; protected string AuthorName get return _AuthorName; set _AuthorName = value; protected void hylArticleAuthor_Click(object sender, EventArgs e) LinkButton hylArticleAuthor=(LinkButton)sender; if(hylArticleAuthor!=null) AuthorName=hylArticleAuthor.Text.ToString(); eSchool.JXKYW.Library.UserMappings UserMapping = (from p in DataContext.UserMappings where p.LoginName.Equals(AuthorName) select p).FirstOrDefault(); if(UserMapping!=null) AnonymouEntityID = Convert.ToInt32(UserMapping.EntityID); AnonymouEntityType = Contact; Response.Redirect(/PersonalDefault.aspx?Type=3); #endregion#region 这是前台代码上一页下一页 收藏日期: asp:Label ID=IDLabel runat=server Text= / : 标题: asp:LinkButton ID=lnkBtnTitle runat=server Text=25? (Eval(ArticleTitle).ToString().Substring(0,25):Eval(ArticleTitle) % OnClick=lnkBtnTitle_Click CommandArgument= 内容:35? (Eval(ArticleContent).ToString().Substring(0,35)+.:Eval(ArticleContent) % 来自: asp:LinkButton ID=hylArticleAuthor runat=server OnClick=hylArticleAuthor_Click Text= 删除                       噢NO您还没有收藏过文章,赶快去收藏吧 #endregion一。以下是分页功能:#region DataList分页 public static DataSet GetDataSet(string sql)/得到数据集 SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings JXKYWConnectionString.ConnectionString); SqlDataAdapter da = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); da.Fill(ds); return ds; public void BindData() string LoginName = this.CurrentLoginName;/得到当前登录名; string sql = select * from vw_CollectionsArticles where CollectorName=+LoginName+; DataSet objds = GetDataSet(sql); PagedDataSource objPds = new PagedDataSource(); objPds.DataSource = objds.Tables0.DefaultView;/得到数据表;数据集的第一个Table;为默认数据源 objPds.AllowPaging = true;/允许分页 objPds.PageSize = 10; objPds.CurrentPageIndex = int.Parse(ViewStatepageindex.ToString(); /*CurrentPageIndex 获取或设置当前页的索引。用视图来保存pageindex; 没有视图时候给0;在page_load事件中给值为0 protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) ViewStatepageindex = 0; BindData();这里就执行一下分页函数 */ if (!objPds.IsFirstPage)/IsFirstPage 获取一个值,该值指示当前页是否是首页。 lkPre.Visible = true; else lkPre.Visible = false; if (!objPds.IsLastPage) lkNext.Visible = true; else lkNext.Visible = false; /如果没有找到数据就隐藏pnlNoArticle if (objPds.DataSourceCount 0)/DataSourceCount 获取数据源中的项数。 this.FindControl(pnlNoArticle).Visible = false; else this.FindControl(pnlNoArticle).Visible = true; dl.DataSource = objPds;/将datalist的数据源设置为pagedatasourse dl.DataKeyField = ID;/关键值 dl.DataBind();/然后最后在讲datalist绑定一下; /*上一页下一页的事件;I两个按钮的 OnCommand都是IndexChanging()函数,我们通过CommandArgument(pre和next)来区分到底是向前翻还是向后翻。下面是IndexChanging()函数*/ protected void IndexChanging(object sender, EventArgs e) string strCommand = (LinkButton)sender).CommandArgument.ToString();/得到linkbtn的CommandArgument值 int pageindex = int.Parse(ViewStatepageindex.ToString(); if (strCommand = pre) pageindex = pageindex - 1; else pageindex = pageindex + 1; ViewStatepageindex = pageindex; BindData();/这里很重要 ;要再一次执行分页函数; #endregion 二。查找数据库中某张表中的某条数据是否存在 #regioneSchool.JXKYW.Library.Articles articles = (from p in DataContext.Articles where p.ID.Equals(ArticleID) & p.IsPublic.Equals(1)&p.UsedFlag.Equals(1) select p).FirstOrDefault();#endregion 三。弹框问题; ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), System.DateTime.Now.Ticks.ToString(), alert(请先登录!), false);四。点击收藏按钮时候弹出一个文本框;并且带有输入文本框;所使用ajax控件;!前台代码:#region /这里要加一个button控件,TargetControlID控件不知为何; /这里是载体控件 /CollRemarkPnl要加Style=display: none,这样它才能正常隐藏和显示,而Panel2的作用是支持拖拽。 收藏理由: %-% #endregion 五。点击收藏按钮在数据库中新增一条数据 #region protected void btnOK_Click(object sender, EventArgs e) eSchool.JXKYW.Library.Collections Collections = new eSchool.JXKYW.Library.Collections() EntityID = ArticleID, CollectorName = this.CurrentLoginName, CreateTime = System.DateTime.Now, UsedFlag = 1, Remark = RemarkTxtb.Text, ; DataContext.Collections.InsertOnSubmit(Collections);/一定要加这两条 DataContext.SubmitChanges();/ ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), System.DateTime.Now.Ticks.ToString(), alert(收藏成功 ), false); #endregion#region 百度datalist分页我的DataList分页方法的核心原理是利用PagedDataSource对象,PagedDataSource类封装了DataGrid 控件的属性,这些属性使 DataGrid 可以执行分页,下面是PagedDataSource的公共属性: AllowCustomPaging 获取或设置指示是否启用自定义分页的值。AllowPaging 获取或设置指示是否启用分页的值。Count 获取要从数据源使用的项数。CurrentPageIndex 获取或设置当前页的索引。DataSource 获取或设置数据源。DataSourceCount 获取数据源中的项数。FirstIndexInPage 获取页中的第一个索引。IsCustomPagingEnabled 获取一个值,该值指示是否启用自定义分页。IsFirstPage 获取一个值,该值指示当前页是否是首页。IsLastPage 获取一个值,该值指示当前页是否是最后一页。IsPagingEnabled 获取一个值,该值指示是否启用分页。IsReadOnly 获取一个值,该值指示数据源是否是只读的。IsSynchronized 获取一个值,该值指示是否同步对数据源的访问(线程安全)。PageCount 获取显示数据源中的所有项所需要的总页数。PageSize 获取或设置要在单页上显示的项数。VirtualCount 获取或设置在使用自定义分页时数据源中的实际项数。 第一步,取出数据到datatable中,然后获得dataview,付给PagedDataSource对象 DataView objView = objTable.DefaultView;PagedDataSource objPds = new PagedDataSource();objPds.DataSource = objView; 第二步,PagedDataSource对象objPds的设置 objPds.AllowPaging = true;objPds.PageSize = 4;objPds.CurrentPageIndex = int.Parse(ViewStatepageindex.ToString(); 上面的这两段代码都是写在BindData()函数中的,供每次点击分页按钮时调用。BindData()函数如下: private void BindData()Books book = new Books(); /Books是我一个操作数据库表的类DataTable objTable = book.GetNewBooks(24);/book有个函数,返回结果是DataTable类型,大家根据自己的情况修改此处代码就行了。if (objTable != null & objTable.Rows.Count 0)DataView objView = objTable.DefaultView;PagedDataSource objPds = new PagedDataSource();objPds.DataSource = objView; objPds.AllowPaging = true;objPds.PageSize = 4;objPds.CurrentPageIndex = int.Parse(ViewStatepageindex.ToString(); if (!objPds.IsFirstPage)lkPre.Visib

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论