datagrid不是自带的马
我这有2005,C#,datalist得,从网上找的,不知道能不能对你有点帮助(http://phigo.blogchina.com/phigo/5548263.html)
前台代码如下:
<TABLE id="Table1" style="Z-INDEX: 101; LEFT: 32px; WIDTH: 752px; POSITION: absolute; TOP: 16px; HEIGHT: 312px" cellSpacing="0" cellPadding="0" width="752" border="0">
<TR>
<TD style="HEIGHT: 29px"><FONT face="宋体">DataList分页技术和超级链接</FONT></TD>
</TR>
<TR>
<TD style="HEIGHT: 252px"><asp:datalist id="DataList1" runat="server" Width="576px"
Height="96px">
<HeaderTemplate>
定单编号<td>
员工编号<td>
定单日期<td>
运费<td>
运往所在城市
</HeaderTemplate>
<ItemTemplate>
<%# show(DataBinder.Eval(Container.DataItem,"OrderID"))%>
<td>
<%# DataBinder.Eval(Container.DataItem,"CustomerID")%>
<td>
<%# DataBinder.Eval(Container.DataItem,"OrderDate")%>
<td>
<%# DataBinder.Eval(Container.DataItem,"Freight")%>
<td>
<%# DataBinder.Eval(Container.DataItem,"ShipCity")%>
</ItemTemplate>
</asp:datalist></TD>
</TR>
<TR>
<TD><FONT face="宋体">
<asp:linkbutton id="FirstLB" runat="server" OnCommand="LinkButton_Click" CommandName="first">第一页</asp:linkbutton>
<asp:linkbutton id="PreviousLB" runat="server" OnCommand="LinkButton_Click" CommandName="prev">上一页</asp:linkbutton>
<asp:linkbutton id="NextLB" runat="server" OnCommand=LinkButton_Click
CommandName="next">下一页</asp:linkbutton>
<asp:linkbutton id="EndLB" runat="server" OnCommand=LinkButton_Click
CommandName="end">最后一页</asp:linkbutton>
总<asp:label id="TotalLbl" runat="server"></asp:label>页 当前第<asp:label id="CurrentLbl" runat="server"></asp:label>页
<asp:linkbutton id="JumpLB" runat="server" OnCommand=LinkButton_Click CommandName="jump">跳到</asp:linkbutton>第
<asp:textbox id="TextBox1" runat="server" Width="90px"></asp:textbox>
页</FONT></TD>
</TR>
</TABLE>
后台代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
PageSize = 12;//每页12条记录
if(!Page.IsPostBack)
{
this.DataListBind();
CurrentPage = 0;//当前页习惯设为0
ViewState["PageIndex"] = 0;//页索引也设为0
//计算总共有多少记录
RecordCount = CalculateRecord();
//计算总共有多少页
PageCount = RecordCount/PageSize;
this.TotalLbl.Text = PageCount.ToString();//显示总页数
ViewState["PageCount"] = PageCount;//会话session 对整个 application 有效 ,而视图状态 viewstate相当于某个页面的 session
}
}
//计算总共有多少条记录
private int CalculateRecord()
{
try
{
int recordCount;
SqlConnection con=new SqlConnection("server=.;database=Northwind;uid=sa;pwd=");//数据库使用Northwind;
con.Open();
string sql= "select count(*) as count from Orders";
SqlCommand cmd = new SqlCommand(sql,con);
SqlDataReader sdr = cmd.ExecuteReader();
if(sdr.Read())
{
recordCount = Int32.Parse(sdr["count"].ToString());
}
else
{
recordCount = 0;
}
sdr.Close();
con.Close();
return recordCount;
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
}
//以第一列定单号做个超级链接,链接到第二页显示定单详细信息
public string show (object orderID)
{
return "<a href=WebForm2.aspx?id="+orderID+" target='_blank'>"+orderID+" </a>";
}
//将数据绑定到Datalist控件
public void DataListBind()
{
try
{
int StartIndex = CurrentPage*PageSize;//设定导入的起终地址
string sql = "select * from Orders";
DataSet ds = new DataSet();
SqlConnection con=new SqlConnection("server=.;database=Northwind;uid=sa;pwd=");
con.Open();
SqlDataAdapter sda= new SqlDataAdapter(sql,con);
sda.Fill(ds,StartIndex,PageSize,"orders");//这是sda.Fill方法的第一次重载,里面的变量分别是数据集DataSet ,开始记录数StartRecord,最大的记录数MaxRecord,数据表名TableName
this.DataList1.DataSource = ds.Tables["orders"].DefaultView;
this.DataList1.DataBind();
this.PreviousLB.Enabled = true;
this.NextLB.Enabled = true;
if(CurrentPage==(PageCount-1)) this.NextLB.Enabled = false;//当为最后一页时,下一页链接按钮不可用
if(CurrentPage==0) this.PreviousLB.Enabled = false;//当为第一页时,上一页按钮不可用
this.CurrentLbl.Text = (CurrentPage+1).ToString();//当前页数
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
}
public void LinkButton_Click(Object sender,CommandEventArgs e)//自己编写的按钮点击事件
{
CurrentPage = (int)ViewState["PageIndex"];//获得当前页索引
PageCount = (int)ViewState["PageCount"];//获得总页数
string cmd = e.CommandName;
//判断cmd,以判定翻页方向
switch(cmd)
{
case "prev"://上一页
if(CurrentPage>0) CurrentPage--;
break;
case "next":
if(CurrentPage<(PageCount-1)) CurrentPage++;//下一页
break;
case "first"://第一页
CurrentPage=0;
break;
case "end"://最后一页
CurrentPage=PageCount-1;
break;
case "jump"://跳转到第几页
if(this.TextBox1.Text.Trim()==""||Int64.Parse(this.TextBox1.Text.Trim())>PageCount)//如果输入数字为空或超出范围则返回
return;
else
{
CurrentPage=Int32.Parse(this.TextBox1.Text.ToString())-1;
break;
}
}
ViewState["PageIndex"] = CurrentPage;//获得当前页
this.DataListBind();//重新将DataList绑定到数据库
}
第二页用来显示详细的定单信息
用的控件是DataGird
代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string id=Request.QueryString["id"];
SqlConnection con=new SqlConnection("server=.;database=Northwind;uid=sa;pwd=");
con.Open();
SqlDataAdapter sda=new SqlDataAdapter();
sda.SelectCommand=new SqlCommand("select * from [Order Details] where OrderID='"+id+"'",con);
DataSet ds=new DataSet();
sda.Fill(ds,"orders");
this.DataGrid1.DataSource=ds.Tables["orders"].DefaultView;
this.DataGrid1.DataBind();
con.Close();
}