DataGrid的问题!急!!

Anson1979324 2003-10-17 11:47:21
DataGrid完整的分页功能怎么实现啊?我要完整代码,对了就给分
...全文
26 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rgbcn 2003-10-17
  • 打赏
  • 举报
回复
repeater和datalist控件可以很快的、灵活地在.aspx页面上显示数据,但
它们都没有分页功能;虽然datagrid控件有分页功能,但使用起来却太古板了、灵活性太差了。
很多文章都在讨论repeater、datalist的分页功能的问题,下面我们就用
pagedatasource这个类在repeater中进行分页:
pagedatasource是datagrid中封装的一个类,datagrid就是用这个来实现分页功能的;
我们也可以用这个类在datalist、repeater中进行分页,大家只要看了下面的程序示例
问题就可以解决了。


<%@Import namespace="System.Data"%>
<%@Import namespace="System.Data.SqlClient"%>
<html>
<head>
<title>default</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="C#" runat="server">
public void Page_Load(Object src,EventArgs e)
{SqlConnection cnn=new SqlConnection("server=zzl;uid=sa;pwd=970480;database=zzl");//连接数据库
SqlDataAdapter mycommand=new SqlDataAdapter("select * from start1",cnn);//数据操作,而表start1及其数据自己sqlserver中做
DataSet ds=new DataSet();
mycommand.Fill(ds); //实例dataset对象为ds,并把数据填充到ds上


PagedDataSource pp=new PagedDataSource();//对分页功能的类实例对象
pp.DataSource=ds.Tables[0].DefaultView;//把数据赋予对象pp
pp.AllowPaging=true;//允许进行分页
pp.PageSize=6;//设置每页数据的个数
int cpage;//这个整数用来分析分页页数的
if(Request.QueryString["page"]!=null)//这个判断语句的作用是对cpage进行赋值
cpage=Convert.ToInt32(Request.QueryString["page"]);
else
cpage=1;
pp.CurrentPageIndex=cpage-1;//pp对象的当前引索值,因为引索值是从0开始,cpage从1开始所以要减1
if (!pp.IsFirstPage)//Request.CurrentExecutionFilePath为当前的程序的文件名,直接写也可以
pre.NavigateUrl=Request.CurrentExecutionFilePath + "?page=" + Convert.ToString(cpage-1);

if (!pp.IsLastPage)
next.NavigateUrl=Request.CurrentExecutionFilePath+ "?page=" + Convert.ToString(cpage+1);

repeater1.DataSource=pp;
repeater1.DataBind();}
</script>
</head>
<body>
<table width="100%" border="0">
<tr><TD>  <asp:label id="current" runat="server"/></TD></tr>
<tr><td> <asp:hyperlink id="pre" runat="server"><<</asp:hyperlink>
<asp:hyperlink id="next" runat="server">>></asp:hyperlink></td></tr></table>
<asp:repeater id="repeater1" runat="server">
<itemtemplate>
<table width="100%" border="0">
<tr><td>  <%#DataBinder.Eval(Container.DataItem,"product")%></td></tr>
<tr><td>  </td></tr></table></itemtemplate></asp:repeater>
</body>
</html>

feixiang1234 2003-10-17
  • 打赏
  • 举报
回复
先将数据绑定到DATAGRID,然后点击它的属性生成器选择分页功能。
Nicholasqpl 2003-10-17
  • 打赏
  • 举报
回复
你打算要什么完整的分页功能啊?
我这有一些代码你试试:
<%@ Page language="c#" Codebehind="WebFormDataGrid.aspx.cs" AutoEventWireup="false" Inherits="WebApplicationDateList.WebFormDataGrid" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebFormDataGrid</title>
<meta content="Microsoft Visual Studio 7.0" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="WebFormDataGrid" method="post" runat="server">
<asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 62px; POSITION: absolute; TOP: 73px" runat="server" AllowPaging="True" PageSize="3" BackImageUrl="file:///F:\Inetpub\wwwroot\web.gif" Font-Names="Verdana" OnSortCommand="MyDataGrid_Sort" AllowSorting="True" AutoGenerateColumns="False" OnUpdateCommand="MyDataGrid_Update" OnCancelCommand="MyDataGrid_Cancel" OnEditCommand="MyDataGrid_Edit" HeaderStyle-BackColor="#ccff33" Font-Size="8pt" Font-Name="Verdana" CellPadding="3" DataKeyField="xue_id" GridLines="Horizontal" BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#E7E7FF" Width="367px" Height="25px">
<SelectedItemStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#738A9C"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#F7F7F7"></AlternatingItemStyle>
<ItemStyle ForeColor="#4A3C8C" BackColor="#E7E7FF"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#4A3C8C"></HeaderStyle>
<FooterStyle ForeColor="#4A3C8C" BackColor="#B5C7DE"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="username" ReadOnly="True" HeaderText="姓名"></asp:BoundColumn>
<asp:BoundColumn DataField="xue_id" ReadOnly="True" HeaderText="学号"></asp:BoundColumn>
<asp:BoundColumn DataField="yuwen" HeaderText="语文"></asp:BoundColumn>
<asp:BoundColumn DataField="shuxue" HeaderText="数学"></asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="编辑命令" CancelText="取消" EditText="编辑">
<HeaderStyle Wrap="False"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:EditCommandColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="#4A3C8C" BackColor="#E7E7FF" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
<p style="FONT-SIZE: 9pt">       
<asp:label id="lblPageCount" style="Z-INDEX: 102; LEFT: 68px; POSITION: absolute; TOP: 39px" runat="server" Width="41px">11</asp:label><asp:label id="lblCurrentIndex" style="Z-INDEX: 103; LEFT: 121px; POSITION: absolute; TOP: 38px" runat="server" Width="42px">22</asp:label><asp:linkbutton id="btnFirst" style="Z-INDEX: 104; LEFT: 179px; POSITION: absolute; TOP: 37px" runat="server" Font-Name="verdana" ForeColor="navy" Font-size="8pt"></asp:linkbutton><asp:linkbutton id="btnPrev" style="Z-INDEX: 105; LEFT: 241px; POSITION: absolute; TOP: 36px" runat="server" Font-Name="verdana" ForeColor="navy" Font-size="8pt"></asp:linkbutton><asp:linkbutton id="btnNext" style="Z-INDEX: 106; LEFT: 310px; POSITION: absolute; TOP: 35px" runat="server" Font-Name="verdana" ForeColor="navy" Font-size="8pt"></asp:linkbutton><asp:linkbutton id="btnLast" style="Z-INDEX: 107; LEFT: 374px; POSITION: absolute; TOP: 35px" runat="server" Font-Name="verdana" ForeColor="navy" Font-size="8pt"></asp:linkbutton></p>
</form>
</body>
</HTML>



private void Page_Load(object sender, System.EventArgs e)
{
this.btnFirst.Text = "最首页";
this.btnPrev.Text = "前一页";
this.btnNext.Text = "下一页";
this.btnLast.Text = "最后页";
if(!IsPostBack)
{
if(sortString=="")
{
sortString="xue_id";
}
kk();
}
// 在此处放置用户代码以初始化页面
}

private void kk()
{
// ds=WFDG.get_ds();
this.DataGrid1.DataSource=kkView();
this.DataGrid1.DataBind();
ShowStats();
}
private DataView kkView()
{
ds=WFDG.get_ds();
DataTable dt=ds.Tables["userpower1"];
DataView dv=new DataView(dt);
dv.Sort=sortString;
return dv;
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
#endregion

public void MyDataGrid_Edit(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
kk();
}

public void MyDataGrid_Cancel(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.DataGrid1.EditItemIndex=-1;
kk();
}

public void MyDataGrid_Update(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
int id=(int)this.DataGrid1.DataKeys[e.Item.ItemIndex];
// int id=Convert.ToInt32(((TextBox)e.Item.Cells[1].Controls[0]).Text);
int yuwen=Convert.ToInt32(((TextBox)e.Item.Cells[2].Controls[0]).Text);
int shuxue=Convert.ToInt32(((TextBox)e.Item.Cells[3].Controls[0]).Text);
WFDG.update(id,yuwen,shuxue);
}

public void MyDataGrid_Sort(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
sortString=e.SortExpression.ToString();
}
public void MyDataGrid_Page(object sender,DataGridPageChangedEventArgs e)
{
int startIndex;
startIndex = this.DataGrid1.CurrentPageIndex * this.DataGrid1.PageSize;
this.DataGrid1.CurrentPageIndex = e.NewPageIndex;
kk();
ShowStats();
}
public void ShowStats()
{
this.lblCurrentIndex.Text = "第 " + (this.DataGrid1.CurrentPageIndex + 1).ToString() + " 页";
this.lblPageCount.Text = "总共 " + this.DataGrid1.PageCount.ToString() + " 页";
}

private void btnLast_Click(object sender, System.EventArgs e)
{
this.DataGrid1.CurrentPageIndex=this.DataGrid1.PageCount - 1;
kk();
ShowStats();
}

private void btnFirst_Click(object sender, System.EventArgs e)
{
this.DataGrid1.CurrentPageIndex =0;
kk();
ShowStats();
}

private void btnPrev_Click(object sender, System.EventArgs e)
{
if(this.DataGrid1.CurrentPageIndex > 0)
{
this.DataGrid1.CurrentPageIndex -= 1;
}
kk();
ShowStats();
}

private void btnNext_Click(object sender, System.EventArgs e)
{
if(this.DataGrid1.CurrentPageIndex < (this.DataGrid1.PageCount - 1))
{
this.DataGrid1.CurrentPageIndex += 1;
}
kk();
ShowStats();
}

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

}
}
对了就给分吧!要快!!

62,046

社区成员

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

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

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

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