留言簿
留言成功,请等待站长审核,谢谢支持!
2007-03-22 10:44 lzwnewsway
分页速度有点慢,能不能改成这种存储过程:<br>Create PROCEDURE SP_PageCut<br>/*<br>***************************************************************<br>** 千万数量级分页存储过程 **<br>***************************************************************<br>参数说明:<br>1.Tables :表名称,视图<br>2.PrimaryKey :主关键字<br>3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc<br>4.CurrentPage :当前页码<br>5.PageSize :分页尺寸<br>6.Filter :过滤语句,不带Where <br>7.Group :Group语句,不带Group By<br>效果演示:http://www.cn5135.com/_App/Opportunities/QueryResult.aspx<br>***************************************************************/<br>(<br>@Tables varchar(2000),<br>@PrimaryKey varchar(100),<br>@Sort varchar(200) = NULL,<br>@CurrentPage int =1,<br>@PageSize int = 10,<br>@Fields varchar(1000) = '*',<br>@Filter varchar(1000) = NULL,<br>@Group varchar(1000) = NULL,<br>@Counts int = 1 OUTPUT <br>)<br>AS<br>/*默认排序*/<br>IF @Sort IS NULL OR @Sort = ''<br>SET @Sort = @PrimaryKey<br>DECLARE @SortTable varchar(100)<br>DECLARE @SortName varchar(100)<br>DECLARE @strSortColumn varchar(300)<br>DECLARE @operator char(2)<br>DECLARE @type varchar(100)<br>DECLARE @prec int<br>/*设定排序语句.*/<br>IF CHARINDEX('DESC',@Sort)>0<br>BEGIN<br>SET @strSortColumn = REPLACE(@Sort, 'DESC', '')<br>SET @operator = '<='<br>END<br>ELSE<br>BEGIN<br>IF CHARINDEX('ASC', @Sort) = 0<br>SET @strSortColumn = REPLACE(@Sort, 'ASC', '')<br>SET @operator = '>='<br>END<br>IF CHARINDEX('.', @strSortColumn) > 0<br>BEGIN<br>SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))<br>SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))<br><br>END<br>ELSE<br>BEGIN<br>SET @SortTable = @Tables<br>SET @SortName = @strSortColumn<br>END<br>IF CHARINDEX(',',@strSortColumn) > 0<br>Begin<br>SET @SortName=RTrim(SUBSTRING(@SortName,0,CHARINDEX(',',@SortName)))<br>END <br><br>SELECT @type=t.name, @prec=c.prec FROM sysobjects o JOIN syscolumns c on o.id=c.id JOIN systypes t on c.xusertype=t.xusertype WHERE o.name = @SortTable AND c.na
回复:您好,网上的分页存储过程有很多种,我的控件示例中用的只是其中一种而已,哪一种更快更高效我没有进行过详细的测试,不过如果您觉得您所用的存储过程分页更快,那么完全可以在您的项目中用这个过程,分页控件和存储过程没有任何直接关系,因为控件是独立于数据的,您只要会调用存储过程以及把要分页的记录总数赋给分页控件的RecordCount属性并编写相应的事件处理程序实现把当前页的数据绑定到数据显示控件上就可以了。谢谢!
2007-03-20 20:03 xia
我不是用存储过程>>>><br>能绑定,点击时分页功能无法现实,<br>窗体加载代码如下:<br>private void Page_Load(object sender, System.EventArgs e)<br> { if(!IsPostBack)<br> {<br> BindGrid();<br> }<br> }<br><br><br>BindGrid()如下:<br>public void BindGrid()<br> {<br> DataAccess da=new DataAccess();<br> string sqlstring="select * from FangWu ";<br> DataTable dt=new DataTable();<br> dt=da.DisPlayList_dt(sqlstring);<br> if(dt.Rows.Count!=0)<br> {<br> this.DataGrid1.DataSource=dt.DefaultView;<br> this.DataGrid1.DataBind();<br> this.AspNetPager1.RecordCount=dt.Rows.Count;<br> }<br>}<br>下面这个事件什么没有e.NewPageIndex<br>private void AspNetPager1_PageChanged(object sender, System.EventArgs e)<br> {<br> <br> }<br><br>在这个事件写好像错误<br> private void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)<br> {<br> if(e.NewPageIndex==1)<br> {<br> this.DataGrid1.CurrentPageIndex=0;<br> this.DataGrid1.CurrentPageIndex=e.NewPageIndex;<br> }<br> else<br> {<br> int i=e.NewPageIndex;<br> this.DataGrid1.CurrentPageIndex=i-1;<br> this.DataGrid1.CurrentPageIndex=e.NewPageIndex;<br> }<br> this.BindGrid();<br> }
回复:您不能在使用分页控件的同时又使用DataGrid内建的分页功能,这样会导致无法正常分页,请不要用DataGrid的分页功能,在程序中对DataGrid只绑定当前页的记录而不是所有记录,请参考一下示例项目。谢谢!
2007-03-20 17:16 renjin
private void AspNetPager1_PageChanged(object sender, System.EventArgs e)<br> {<br> showData();<br> }<br> }<br>}<br>楼主,你好!<br>我怎么解决"命名空间名称“WebPart”在类或命名空间“System.Web.UI.WebControls”中不存在"问题!我是按照你给的视频教程进行操作的!
回复:详细错误信息中应该显示具体哪一行代码出错了,看起来您用了WebPart,却没有引入相应的命名空间,这和分页控件没有任何关系的,另外我没有做过视频教程,不知道您在哪下载的视频教程?谢谢!
2007-03-20 17:14 renjin
using System;<br>using System.Collections;<br>using System.ComponentModel;<br>using System.Data;<br>using System.Drawing;<br>using System.Web;<br>using System.Web.SessionState;<br>using System.Web.UI;<br>using System.Web.UI.WebControls;<br>using System.Web.UI.WebControls.WebPart;<br>using System.Web.UI.HtmlControls;<br>using Socut.Data;<br><br>namespace netshow.ycsz<br>{<br> /// <summary><br> /// search 的摘要说明。<br> /// </summary><br> public class search : System.Web.UI.Page<br> {<br> protected System.Web.UI.WebControls.DataGrid DataGrid1;<br> protected Wuqi.Webdiyer.AspNetPager AspNetPager1;<br><br> public CData myData=new CData ();//调用组件中的类CData<br> public DataSet ds=new DataSet ();//将DataSet实例化<br><br> private void showData()<br> {<br> string wh=Request.Params ["where"];<br> string keyword=Request.Params ["keyword"];<br><br> ds=myData.ExecuteDataSet ("SELECT * FROM Article WHERE "+wh+" like '%"+keyword+"%' order by n_ID DESC",0,0,"TableName",AspNetPager1.PageSize*(AspNetPager1.CurrentPageIndex-1),AspNetPager1.PageSize);<br> DataGrid1.DataSource =ds;//设置数据源<br> DataGrid1.DataBind ();//绑定数据<br> }<br> <br> <br> private void Page_Load(object sender, System.EventArgs e)<br> {<br> // 在此处放置用户代码以初始化页面<br> AspNetPager1.RecordCount=(int)myData.ExecuteScalar ("SELECT Count(*) FROM Article ");<br> <br> }<br><br><br> #region Web 窗体设计器生成的代码<br> override protected void OnInit(EventArgs e)<br> {<br> //<br> // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。<br> //<br> InitializeComponent();<br> base.OnInit(e);<br> }<br> <br> /// <summary><br> /// 设计器支持所需的方法 - 不要使用代码编辑器修改<br> /// 此方法的内容。<br> /// </summary><br> private void InitializeComponent()<br> { <br> this.AspNetPager1.PageChanged += new System.EventHandler(this.AspNetPager1_PageChanged);<br> this.Load += new System.EventHandler(this.Page_Load);<br><br> }<br> #endregion<br><br> private void
2007-03-20 10:01 jnpz886
你好!<br>昨天的问题没发清楚;真不好意思!<br>我以前用的是4.3版本的;现在换了个6.0版本, 不知道会不会冲突!<br>6.0有没继承了一起版本的所有功能呢?
回复:6.0和以前版本有些不兼容的地方特别需要注意一下,否则会出错,详细停息请看这个页面:http://www.webdiyer.com/AspNetPager/upgradenotice.aspx ,谢谢!
2007-03-19 14:32 psyduck
你好!<br>我下好多次了AspNetPagerSamples.rar,每次下到748K就完了,打开总提示出错,不知道能不能用Email.发一份给,谢谢<br>我的mail:296620562@qq.com
回复:可能您是网通用户的原因,我已将文件发送到您的邮箱,请注意查收。谢谢!
2007-03-19 14:03 mx1680
希望能加强一下数字和导航按扭的动态效果:mouseover,mouseout等事件时切换图片
回复:谢谢您的建议,有时间我会考虑的。
2007-03-19 11:21 jnpz886
<td valign="bottom" align="left" nowrap="true" style="width:40%;">Page <font color="red"><b>5</b></font> of 42&nbsp;&nbsp;Orders 81-100</td><td valign="bottom" align="center" nowrap="true" class="" style="width:60%;"><a href="/testrewriter/index-1.aspx" style="margin-right:5px;">&lt;&lt;</a><a href="/testrewriter/index-4.aspx" style="margin-right:5px;">&lt;</a><a href="/testrewriter/index-1.aspx" style="margin-right:5px;">-1-</a><a href="/testrewriter/index-2.aspx" style="margin-right:5px;">-2-</a><a href="/testrewriter/index-3.aspx" style="margin-right:5px;">-3-</a><a href="/testrewriter/index-4.aspx" style="margin-right:5px;">-4-</a><span style="margin-right:5px;font-weight:Bold;color:red;">-5-</span><a href="/testrewriter/index-6.aspx" style="margin-right:5px;">-6-</a><a href="/testrewriter/index-7.aspx" style="margin-right:5px;">-7-</a><a href="/testrewriter/index-8.aspx" style="margin-right:5px;">-8-</a><a href="/testrewriter/index-9.aspx" style="margin-right:5px;">-9-</a><a href="/testrewriter/index-10.aspx" style="margin-right:5px;">-10-</a><span style="margin-right:5px;"><a href="/testrewriter/index-11.aspx">...</a></span><a href="/testrewriter/index-6.aspx" style="margin-right:5px;">&gt;</a><a href="/testrewriter/index-42.aspx" style="margin-right:5px;">&gt;&gt;</a>&nbsp;&nbsp;<input type="text&q
回复:怎么回事呢?因为字数有限制,代码太长会被截掉,如果非得提交太长的代码的话请分多次提交。
2007-03-18 18:32 salough
后来我又调整了,每一页的数据是可以显示了,但是又有新的一个问题,<br><asp:ControlParameter ControlID="AspNetPager1" DefaultValue="1" Name="pageindex"<br>PropertyName="CurrentPageIndex" Type="Int32" /><br>显示的时候总共3页,共有11条记录,当前页为第1页,记录从1-4.<br>但是我翻到了第2,3页,“当前页为第1页,记录从1-4.”一直没有变化。<br>里面的设置是这样的:Label1.Text = AspNetPager1.PageCount + "页"+AspNetPager1.RecordCount.ToString()+"条记录,当前页"+AspNetPager1.CurrentPageIndex.ToString() ;<br> Label1.Text += AspNetPager1.StartRecordIndex + "-" + AspNetPager1.EndRecordIndex;
回复:请仔细检查用来获取数据的SQL语句或存储过程,看看传递相应的参数后获取的数据是否正确,如果正确的话检查您的程序代码中是怎么给存储过程或SQL语句传递相应的分页参数的,把这些值输出看是否是正确的!
2007-03-18 17:35 salough
经过今天的测试,数据是能显示了,但出现了新的问题,如下:<br>我用的是datalist+sqldatasource,datasource中设置如下:<br><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"<br> SelectCommand="sp_GetEmployees" SelectCommandType="StoredProcedure"><br> <SelectParameters><br> <asp:ControlParameter ControlID="AspNetPager1" DefaultValue="10" Name="pagesize"<br> PropertyName="PageSize" Type="Int32" /><br> <asp:ControlParameter ControlID="AspNetPager1" DefaultValue="1" Name="pageindex"<br> PropertyName="StartRecordIndex" Type="Int32" /><br> <asp:Parameter DefaultValue="0" Name="docount" /><br> </SelectParameters><br> </asp:SqlDataSource><br>然后按照你给的samples的例子,但是只能显示第一页的数据,到第二页以后的数据就没有了,不知道是什么原因?