首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

这么菜还出来吓人真的是小弟我的不对

2012-01-08 
这么菜还出来吓人真的是我的不对关于DATAGRID分页的问题,,,因为数据表太大所以直接显示的话就会出现乱码,

这么菜还出来吓人真的是我的不对
关于DATAGRID分页的问题,,,因为数据表太大所以直接显示的话就会出现乱码,而选择了属性后AllowPaging后就有显示了,但只能显示第一页,我照猫画虎地添加了几条语句,我想肯定是不全不对的,就一个按钮和一个DATAGRID
大家能帮看看应该改哪里吗,
using   System;
using   System.Collections;
using   System.ComponentModel;
using   System.Data;
using   System.Drawing;
using   System.Web;
using   System.Web.SessionState;
using   System.Web.UI;
using   System.Web.UI.WebControls;
using   System.Web.UI.HtmlControls;
using   CommonLibrary;
using   System.Data.SqlClient;

namespace   NetApp.Web.DigitSale
{
///   <summary>
///   WebForm6   的摘要说明。
///   </summary>
public   class   WebForm6   :   System.Web.UI.Page
{
protected   System.Web.UI.WebControls.Button   Button1;
protected   System.Web.UI.WebControls.DataGrid   DataGrid1;
                private   DataSet   dataset;

private   void   Page_Load(object   sender,   System.EventArgs   e)
{
//   在此处放置用户代码以初始化页面
                          dataset   =   GetCheckCondition1();
}

#region   Web   窗体设计器生成的代码
override   protected   void   OnInit(EventArgs   e)
{
//
//   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

///   <summary>
///   设计器支持所需的方法   -   不要使用代码编辑器修改
///   此方法的内容。
///   </summary>
private   void   InitializeComponent()
{        
this.Button1.Click   +=   new   System.EventHandler(this.Button1_Click);
this.DataGrid1.PageIndexChanged   +=   new   System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
this.DataGrid1.SelectedIndexChanged   +=   new   System.EventHandler(this.DataGrid1_SelectedIndexChanged);
this.Load   +=   new   System.EventHandler(this.Page_Load);

}
#endregion
private   DataSet   GetCheckCondition1()
{
return   SqlHelper.ExecuteDataset(ConfigInfo.UniqueInstance.ConnectionString,
System.Data.CommandType.StoredProcedure, "web_checkcondition1 ");
}

private   void   Button1_Click(object   sender,   System.EventArgs   e)
{

this.DataGrid1.DataSource=dataset.Tables[0].DefaultView;
this.DataGrid1.DataBind();
}

private   void   DataGrid1_SelectedIndexChanged(object   sender,   System.EventArgs   e)
{

}

private   void   DataGrid1_PageIndexChanged(object   source,   System.Web.UI.WebControls.DataGridPageChangedEventArgs   e)
{
    DataGrid1.CurrentPageIndex       =       e.NewPageIndex;      
                    DataGrid1.DataBind();      

}
}
}

其实高手说最好是在存储过程里做分页的,但我太菜了,我也不会啊,
ALTER   PROCEDURE   dbo.web_checkcondition1

AS
select       *   from   DigitCustSaleM
       
RETURN
这是这个页的存储过程,高手们能简单说下应该怎么样添加分页吗
还有我刚才看了一篇文章讲分页的,里面说要加上第一条记录数和最后一条记录数,可是我觉得复杂的查询后根本也不能知道到底有多少条啊,哈哈,这个问题是不是太菜了,请大家赐教,,,,



[解决办法]
初学不用想那么好的性能了
直接在属性里设置AllowPaging,pagesize就可实现分页
查询把所有的都查询出来
[解决办法]
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;

dataset = GetCheckCondition1();
this.DataGrid1.DataSource=dataset.Tables[0].DefaultView;
this.DataGrid1.DataBind();

}

当然这是很不好的,只能正确运行而已

[解决办法]
先用自带的分页功能吧,存储过程的分页不是一两句能说清楚的

而且你对控件的使用应该还说不上熟悉
[解决办法]
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
this.DataGrid1.DataSource=dataset.Tables[0].DefaultView;
this.DataGrid1.DataBind();

}
}
}
[解决办法]
DataGrid控件已经过时, 建议使用GridView控件, 可以针对列排序,还有内置行编辑功能.

如果是winform, 则用DataGridView取代.
[解决办法]
为什么不用分页控件做啊?
aspnetpager
[解决办法]
数据库端加分页存储过程 想显示哪些行调用一下就行了。你可以写个sql语句试一下,看看,挺好用。

/************ Sql 上写一个分页存储过程。 几十万行数据很快的。
返回3个表
1、各个字段名
2、总共多少行,多少页,当前页
3、当前页数据
*/
CREATE PROCEDURE sp_mypager(@sqlstr nvarchar(4000),@Pagecount int, @pagesize int )
/*--分页方法:

-- j9988(j9988) --*/
-- @slqstr :查询字符串
-- @pagecount 第N 页
--@ pggesize 每页行数
/* --测试用
declare @sqlstr nvarchar(4000), --查询字符串
@pagecount int,--第N页
@pagesize int--每页行数

select @pagecount=2--第3页
,@pagesize=15--每页10条
,@sqlstr= 'select * from dbo.zy_kc_yu_852 '
*/
as
set nocount on
declare @P1 int,--P1是游标的id
@rowcount int

exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select @rowcount as 总行数,ceiling(1.0*@rowcount/@pagesize) as 页数,@pagecount as 当前页
set @pagecount=(@pagecount-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@pagecount,@pagesize
exec sp_cursorclose @P1

GO



[解决办法]
http://weblogs.asp.net/scottgu/archive/2006/01/01/434314.aspx

这里有一些与分页有关的信息.
[解决办法]
mark
[解决办法]
DataGrid1.DataBind();

光写了分页设置,但是DataBind(),你最后没有绑定的数据源.

大量数据分页,可以找第三方分页函数.

[解决办法]
分页不外是两个操作:
1、select top 100000 id ...
2、select top 10 ... where xxx > id
[解决办法]
我有一个十分好的分页的方法,分页的关键就是查出第n到m的记录,在sql server中可以
SELECT TOP m-n+1 *
FROM publish
WHERE (id NOT IN (SELECT TOP n-1 id FROM publish))
用其他的数据库也有类似的功能
或者你直接用dataset做数据源。这样就可以在填充dataset的时候指定查询的数据段了。
[解决办法]
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)


{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
DataGrid1.DataBind();
this.Button1_Click(object source, ,new System.EventArgs());
}
楼主,我和你遇到的问题一样,后来改成这样就可以自动分页。
[解决办法]
VS2005设置可以直接分,2003好象不行!
[解决办法]
存储过程分页,高效

热点排行