CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

自定义datagrid分页事件遇到的问题

楼主dandelion(为我点灯!)2002-11-14 18:56:59 在 .NET技术 / ASP.NET 提问

起因:由于我的datagrid的Head部分要实现双行标题,并且我的分页部分要放在datagrid的左上方.  
   
  问题:由于我在实现双行标题时利用了datagrid的上方的Pager区域,再加上客户要求分页必须要放在datagrid的左上方.  
  所以实现时我在datagrid的上方放了一个Table控件,通过在其中加入linkbutton控件来实现与datagrid的分页功能.  
  这时候问题就出现了:每一个linkbutton必须点击两次才能对datagrid排序.  
   
  请各位大侠帮帮忙!  
  以下是我的部分代码,以便大家参考.  
  问题点数:100、回复次数:10Top

1 楼dandelion(为我点灯!)回复于 2002-11-14 19:03:31 得分 0

 
  protected   System.Data.OleDb.OleDbDataAdapter   oleDbDataAdapter1;  
  protected   System.Data.OleDb.OleDbCommand   oleDbSelectCommand1;  
  protected   System.Data.OleDb.OleDbCommand   oleDbInsertCommand1;  
  protected   System.Data.OleDb.OleDbConnection   oleDbConnection1;  
  protected   paging.DataSet1   dataSet11;  
  protected   System.Web.UI.WebControls.Table   Table1;  
  protected   System.Web.UI.WebControls.DataGrid   DataGrid1;  
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
            this.DataGrid1.CurrentPageIndex   =   0;  
            this.oleDbDataAdapter1.Fill(dataSet11);  
            this.DataGrid1.DataBind();  
  }  
   
  private   void   DataGrid1_ItemCreated(object   sender,   System.Web.UI.WebControls.DataGridItemEventArgs   e)  
  {  
            ListItemType   elemType   =   e.Item.ItemType;  
            if(elemType   ==   ListItemType.Pager)  
            {  
  CreateTable(this.DataGrid1.PageCount);  
            }  
  }  
   
  private   void   LinkCommand(object   sender,   System.Web.UI.WebControls.CommandEventArgs   e)  
  {  
  Response.Write("You   chose:   "   +   e.CommandName   +   "   Item   "   +   e.CommandArgument);  
   
                    this.DataGrid1.CurrentPageIndex   =   Int32.Parse(e.CommandArgument.ToString())   -   1;  
  this.DataGrid1.DataBind();  
  }  
   
  private   void   CreateTable(int   pageCount)  
  {  
  //if(Table1.Rows.Count   ==   1)  
  //{  
  //       if(Table1.Rows   [0].Cells.Count==pageCount)  
  //       {  
  // return;  
  //       }  
  //}  
   
            Table1.Rows.Clear();  
            TableRow   r   =   new   TableRow();  
   
            if(pageCount==1)  
            {  
                      Label   l   =   new   Label();  
  l.Text   =   "1";  
  TableCell   c1   =   new   TableCell();  
  c1.Style.Add("font-size","10pt");  
  c1.Controls.Add(l);  
  r.Cells.Add(c1);  
            }  
            else  
            {  
  for(int   i=0;i<pageCount;i++)  
  {  
                      TableCell   c2   =   new   TableCell();  
  c2.Style.Add("font-size","10pt");  
  int   y   =   i+1;  
  if(i==this.DataGrid1.CurrentPageIndex)  
  {  
                      Label   l2   =   new   Label();  
  l2.Text   =   y.ToString();  
  c2.Controls.Add(l2);  
  r.Cells.Add(c2);  
  continue;  
  }  
  LinkButton   h   =   new   LinkButton();  
  h.Text   =   y.ToString();  
  h.CommandName   =   "Page";  
  h.CommandArgument   =   y.ToString();  
  h.Command   +=   new   System.Web.UI.WebControls.CommandEventHandler(this.LinkCommand);  
  c2.Controls.Add(h);  
  r.Cells.Add(c2);  
  }  
            }  
     
            Table1.Rows.Add(r);  
            Table1.DataBind();  
  }Top

2 楼icyer()回复于 2002-11-15 09:04:22 得分 10

似乎可以运行的呀,你看看我写的简单代码:  
  DataGrid1_ItemCreated:  
  LinkButton   link   =   new   LinkButton();  
  link.Text   =   "1";  
  link.CommandName   =   "1";  
  e.Item.Cells[0].Controls.Add(link);  
  link.Click   +=   new   System.EventHandler(this.PagerButton_Click);  
   
  PagerButton_Click:  
  LinkButton   link   =   (LinkButton)sender;  
  Response.Write("You   click   "   +   link.CommandName);  
   
  似乎没有必要用Table1.DataBind()吧。  
  Top

3 楼xiajianfeng()回复于 2002-11-15 09:31:10 得分 0

up  
  Top

4 楼losenetway(firesword)回复于 2002-11-15 10:01:35 得分 0

从代码看应该是没有问题的Top

5 楼monkey_zeng(未来报告)回复于 2002-11-15 10:22:44 得分 0

要让分页显示在左上方?直接用属性设置就可以达到目的啦!  
  Top

6 楼dandelion(为我点灯!)回复于 2002-11-15 11:39:03 得分 0

to   icyer()    
  我根据你的提示对程序进行了修改,但还是出现相同的问题啊.Top

7 楼superkiller(毛毛雨)回复于 2002-11-15 12:04:48 得分 10

由于我在实现双行标题时利用了datagrid的上方的Pager区域,再加上客户要求分页必须要放在datagrid的左上方.  
  所以实现时我在datagrid的上方放了一个Table控件,通过在其中加入linkbutton控件来实现与datagrid的分页功能.  
   
  //可不可在header   部分做你的标题(反正你是加table实现),  
  pager   部分不动他?  
  Top

8 楼dandelion(为我点灯!)回复于 2002-11-15 12:40:06 得分 0

to     superkiller(毛毛雨):  
  这样一来的话我怕会影响到排序  
  你以前这样做过吗?Top

9 楼losenetway(firesword)回复于 2002-11-15 12:59:50 得分 0

是的,有问题Top

10 楼losenetway(firesword)回复于 2002-11-16 18:40:55 得分 80

加一句话就可以了  
  LinkButton   h   =   new   LinkButton();  
  h.ID="losenetway"+y.ToString();//要保证那个是唯一的  
  h.Text   =   y.ToString();Top

相关问题

  • 自定义datagrid分页事件遇到的问题(二)
  • 针对DataGrid的自定义分页UserControl
  • DataGrid控件的自定义分页??
  • to icyer,帮忙看看dandelion的帖子"自定义datagrid分页事件遇到的问题"?拜托啦
  • 我不想用储存过程自定义分页.只是用datagrid自定义分页. 怎么做?
  • 谁有DATAGRID控件自定义分页的完整C#代码??
  • 关于datagrid自定义分页的问题
  • 关于datagrid自定义分页的问题,急等,谢谢
  • 100分请教datagrid自定义分页问题!!!
  • 如何自定义DataGrid分页数字的颜色或样式!

关键词

  • datagrid
  • 分页
  • oledb
  • 实现
  • 问题
  • protected system
  • table
  • data

得分解答快速导航

  • 帖主:dandelion
  • icyer
  • superkiller
  • losenetway

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo