发布一个DataGrid的分页用户控键,以及一个DataGrid排序的类

yydy 2004-06-07 01:30:59
大家使用过程中,多多改进,增加功能,有更好的也贴上来。
例如:Web下打印、数据转档(excel)等。
...全文
498 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
SprinBell 2004-07-24
  • 打赏
  • 举报
回复
学习
miounet 2004-07-24
  • 打赏
  • 举报
回复
有没有人呀,为什么我用不了呀。还有什么问题呀。
miounet 2004-07-24
  • 打赏
  • 举报
回复
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 184: currentPage=Grid.CurrentPageIndex+1;
行 185: recordCount=dv.Count;
行 186: LblAllcount.Text=recordCount.ToString();//记录数
行 187: LblPagecount.Text=pageCount.ToString();//页数
行 188: LblCurrentindex.Text=currentPage.ToString();


出错了。不知道为什么没有实例化!
guxiangdefeng 2004-06-25
  • 打赏
  • 举报
回复
有做服务器控件的高手吗?
ddggggdd 2004-06-25
  • 打赏
  • 举报
回复
试试先
studyOK 2004-06-25
  • 打赏
  • 举报
回复
楼主,我使用你的分页控件,运行时出错,信息为:[

指定的参数已超出有效值的范围。参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: index

源错误:


行 187: {
行 188: for(int i=0;i<=DG.Items.Count-1 ;i++)//生成datagrid序号列
行 189: {((LinkButton)DG.Items [i].Cells[0].Controls[0]).Text=Convert.ToString((DG.CurrentPageIndex)*DG.PageSize+i+1);}
行 190: }
行 191:

引用控件完全是的按照你的方法来做的,应该不会有错的。

我把Add_No()中的语句注释掉了,可以分页和排序,但不知是否会有别的错误,请楼主告知。

再就是数据分页时总是截入全部数据,有些浪费资源了吧?
还应该判断是否到了首页和最后一页,从而使“上一页”和“下一页”不可用等。
yydy 2004-06-17
  • 打赏
  • 举报
回复
是的,正在改进中
我是新手,大家共同努力
iamsea11 2004-06-16
  • 打赏
  • 举报
回复
这样还是把所有数据读取吧,
yydy 2004-06-16
  • 打赏
  • 举报
回复
在我这里已经调试成功了
yydy 2004-06-16
  • 打赏
  • 举报
回复
Sorry!
我说的详细些!
=================================================
using wj.Controls;
using wj.Helper;
//以上我引用了自定义控键、Ctronl.cs和SqlHelper类
namespace wjDemo.Control
{
/// <summary>
/// gridTest 的摘要说明。
/// </summary>
public class gridTest : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.DataGrid myGrid;
protected CtlPagination myPagination;
public static DataSet myDs; ///要定义成静态的

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
///这一块可以自己写,我引用了SqlHelp类的方法,CONN_STRING_NON是连接数据库的字符串,在SqlHelper类里定义
string mySql = "select * from customers";
using(myDs = SqlHelper.ExecuteDataset(SqlHelper.CONN_STRING_NON,CommandType.Text,mySql))
{
myGrid.DataSource = myDs.Tables[0].DefaultView;
myGrid.DataBind();
}
}
//这里先前的说明里有
myPagination.Grid = myGrid;
myPagination.dset = myDs;
myPagination.InitData();
}

private void myGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
myPagination.Grid = myGrid;
myPagination.dset = myDs;
myPagination.InitData();

DataGridControl DCon = new DataGridControl();
DCon.DG = myGrid;
DCon.Add_No();
}

private void myGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
DataGridControl Dcon=new DataGridControl(myGrid,myDs);
Dcon.Item_Sort(e);
}
}
}

在aspx文件中
<asp:DataGrid id="myGrid" runat="server" AllowSorting="True" AutoGenerateColumns="False" Width="100%"
AllowPaging="True">
<Columns>
<asp:ButtonColumn Text="ID" CommandName="select"></asp:ButtonColumn>
<asp:BoundColumn DataField="CustomerID" SortExpression="CustomerID" HeaderText="CID"></asp:BoundColumn>
<asp:BoundColumn DataField="CompanyName" SortExpression="ContactName" HeaderText="CName"></asp:BoundColumn>
<asp:BoundColumn DataField="ContactName" SortExpression="ContactName" HeaderText="ContactName"></asp:BoundColumn>
<asp:BoundColumn DataField="Address" SortExpression="Address" HeaderText="Address"></asp:BoundColumn>
<asp:BoundColumn DataField="City" SortExpression="City" HeaderText="City"></asp:BoundColumn>
<asp:BoundColumn DataField="Phone" SortExpression="Phone" HeaderText="Phone"></asp:BoundColumn>
</Columns>
<PagerStyle Visible="False"></PagerStyle>
</asp:DataGrid></TD>
大家参考
dohelp 2004-06-15
  • 打赏
  • 举报
回复
ds这dataset,在上面已经取到了。
第一、如何定义一每页的行数?难道用默认的分页页数?
第二、必须在onItemDataBound事件中也进行调用吗?
第三、我每页为10行,可表中有24条记录的,你的程序虽然测出我有24条,但却只显示共24行,共1页。为什么没测出共3页呢?
第四、还有,点击 下一页时,case ("next"):
if(Grid.CurrentPageIndex<(Grid.PageCount-1))
Grid.CurrentPageIndex++;
中,这句话Grid.CurrentPageIndex++;没有执行呀?
第五、根本不能翻页呀,总是显示前面的10行。

dohelp 2004-06-15
  • 打赏
  • 举报
回复
楼主,我这里怎么不好用呀?

我的调用:

if(!IsPostBack)
{

DataView myView = ds.Tables[0].DefaultView;

DataGrid1.DataSource = myView;
DataGrid1.DataBind();




}





CtlPag.Grid=DataGrid1;
CtlPag.dset =ds;
CtlPag.InitData();
ccchhhwww 2004-06-15
  • 打赏
  • 举报
回复
学习
benbencatrabbit 2004-06-15
  • 打赏
  • 举报
回复
MARK
yydy 2004-06-13
  • 打赏
  • 举报
回复
用户控件DataGrid 分页控件CtlPagination.ascx的使用方法
主要属性方法:
public DataGrid Grid; ----进行分页的DataGrid
public DataSet dset; ----与DataGrid绑定的DataSet
public DataTable dt; ---与DataGrid绑定的DataTable
public DataView dv; ---与DataGrid绑定的DataView
public void InitData() -----初始刷新数据


使用步骤:
1.拖动分页控件至页面指定位置(一般在DataGrid下方);
2.在页面.cs文件中声明 protected CtlPagination CtlPag(控件ID);
3.在页面Page_Load事件中if(!this.Page.IsPostBack)外部添加
CtlPag.Grid=DataGrid控件ID;
CtlPag.dset = 绑定数据源;DataSet、DataTable、DataView的ID
CtlPag.InitData();
4.在DataGrid事件onItemDataBound中添加下面三句
CtlPag.Grid=DataGrid控件ID;
CtlPag.dset = 绑定数据源;DataSet、DataTable、DataView的ID
CtlPag.InitData();
完成。

DataGrid 控制类 DataGridControl.cs

功能:实现DataGrid的排序,选中行、滑动高亮、生成id标示列
主要属性方法: public DataGrid DG;---DataGrid引用变量
public DataTable DT; ---与DataGrid绑定的DataSet
public DataSet DS;---与DataGrid绑定的DataTable
public DataView DV;---与DataGrid绑定的DataView
public void Item_Load()---选中记录
public void Item_Sort( System.Web.UI.WebControls.DataGridSortCommandEventArgs e) ----DataGrid的排序方法
public void Item_Light() ---鼠标滑动行高亮显示

使用方法:
1.在DataGrid事件onItemDataBound中添加语句
DataGridControl Dcon=new DataGridControl();
Dcon.DG=dgPuepose;
Dcon.Item_Light();//鼠标滑动高亮显示
Dcon.Item_Load();//选中行记录
Dcon.Add_No(); //
2.排序需在DataGrid事件onSortCommand中添加下列语句:
DataGridControl Dcon=new DataGridControl(dgPuepose,BLLBudgetPurpose.ds);
Dcon.Item_Sort(e);

DouZHlang 2004-06-12
  • 打赏
  • 举报
回复
up
iamsea11 2004-06-12
  • 打赏
  • 举报
回复
谁能够 调用成功?  怎么不行丫 !!!
xzhy80 2004-06-09
  • 打赏
  • 举报
回复
up
zjh13226 2004-06-09
  • 打赏
  • 举报
回复
看看再说
zhoulanga 2004-06-09
  • 打赏
  • 举报
回复
up
加载更多回复(6)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧