容易么我, DataList分页在网上找了N个例子,分了三天,经历了N多挫折,心情从低谷到高山,又从高山到低谷,快弄出精神病了,好在有很多朋友帮忙,总算弄出来了,总结了下,发现N多的挫折竟然都是些很基础的知识,感叹啊,想提高快点真是要一步一个脚印,扎扎实实的.把代码贴出来,给以后要用留点参考.
后台:
protected void Page_Load(object sender, EventArgs e)

...{
if (!IsPostBack)

...{
panel1.Visible = true;

this.Session["tid"] = "";

GetDataBind("select * from land_showimages");

CurrentPage = 0;
ViewState["PageIndex"] = 0;
//计算总共有多少记录
RecordCount = CalculateRecord("");
lblRecordCount.Text = RecordCount.ToString();
//计算总共有多少页

if (RecordCount % PageSize != 0)

...{
PageCount = RecordCount / PageSize + 1;
}
else

...{
PageCount = RecordCount / PageSize;
}

lblPageCount.Text = (PageCount).ToString();
ViewState["PageCount"] = PageCount;
myDropDownList.Items.Clear();
DropDown();
}
}

int PageSize = 6, RecordCount, PageCount, CurrentPage;

private void GetDataBind(string sql)

...{
int StartIndex;
//设定导入的起终地址
StartIndex = CurrentPage * PageSize;

DataSet ds = new DataSet();

OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
conn.Open();

OracleCommand comm = new OracleCommand();
comm.Connection = conn;
comm.CommandText = sql;
comm.CommandType = CommandType.Text;

OracleDataAdapter myda = new OracleDataAdapter();
myda.SelectCommand = comm;

myda.Fill(ds, StartIndex, PageSize, "land_showimages");


MyDataGrid.DataSource = ds.Tables["land_showimages"].DefaultView;
MyDataGrid.DataBind();

lbnFirstPage.Enabled = true;
lbnNextPage.Enabled = true;
lbnPrevPage.Enabled = true;
lbnLastPage.Enabled = true;

if (CurrentPage == (PageCount - 1))

...{
lbnLastPage.Enabled = false;
lbnNextPage.Enabled = false;
}
if (CurrentPage == 0)

...{
lbnFirstPage.Enabled = false;
lbnPrevPage.Enabled = false;
}

if (PageCount == 1)

...{
lbnFirstPage.Enabled = false;
lbnNextPage.Enabled = false;
lbnPrevPage.Enabled = false;
lbnLastPage.Enabled = false;
}
lblCurrentPage.Text = (CurrentPage + 1).ToString();
ViewState["PageIndex"] = CurrentPage;
}

public int CalculateRecord(string tid)

...{
int intCount;

OraAccess ora = new OraAccess();
DBParaList para = new DBParaList();

if (tid == "")

...{
intCount = ora.exeCountSql("land_showimages", new DBParaList());
}
else

...{
para.AddPara("typeid", tid);
intCount = ora.exeCountSql("land_showimages", para);
}
ora.close();
return intCount;
}

public void Page_OnClick(Object sender, CommandEventArgs e) //翻页按钮

...{
CurrentPage = (int)ViewState["PageIndex"];
PageCount = (int)ViewState["PageCount"];

string cmd = e.CommandName;
//判断cmd,以判定翻页方向
switch (cmd)

...{
case "next":
if (CurrentPage < (PageCount - 1)) CurrentPage++;
break;
case "prev":
if (CurrentPage > 0) CurrentPage--;
break;
case "last":
CurrentPage = PageCount - 1;
break;
default:
CurrentPage = System.Convert.ToInt32(cmd);
break;
}
ViewState["PageIndex"] = CurrentPage;
myDropDownList.SelectedIndex = CurrentPage;

if (this.Session["tid"] == "")

...{
GetDataBind("select * from land_showimages");
}
else

...{
GetDataBind("select * from land_showimages where typeid='" + this.Session["tid"] + "'");
}
panel1.Visible = true;

}

private void DropDown()

...{
for (int u = 0; u < PageCount; u++)

...{
myDropDownList.Items.Add(new ListItem("第" + (u + 1).ToString() + "页", Convert.ToString(u)));
}
}

public void listchanged(object sender, System.EventArgs e) //页数下拉框

...{
CurrentPage = myDropDownList.SelectedIndex;

GetDataBind("select * from land_showimages where typeid='" + this.Session["tid"] + "'");
panel1.Visible = true;

}

public void ddltype_OnSelectedIndexchanged(object sender, System.EventArgs e) //类别下拉框

...{
string sql;
if (ddltype.SelectedValue == "-1")

...{
sql = string.Format("select * from land_showimages");
this.Session["tid"] = "";
}
else

...{
sql = string.Format("select * from land_showimages where typeid={0}", ddltype.SelectedValue);
this.Session["tid"] = ddltype.SelectedValue;

}
GetDataBind(sql);

panel1.Visible = true;
CurrentPage = 0;
ViewState["PageIndex"] = 0;
//计算总共有多少记录
RecordCount = CalculateRecord(this.Session["tid"].ToString());
lblRecordCount.Text = RecordCount.ToString();
//计算总共有多少页

if (RecordCount % PageSize != 0)

...{
PageCount = RecordCount / PageSize +1;
}
else

...{
PageCount = RecordCount / PageSize;
}

lblPageCount.Text = (PageCount).ToString();
ViewState["PageCount"] = PageCount;
myDropDownList.Items.Clear();
DropDown();
}
前台:
<div style="background-color: #ffffff">
<asp:DropDownList ID="ddltype" runat="server" AppendDataBoundItems="true" DataSourceID="SDSTYPE"
AutoPostBack="true" DataTextField="typename" DataValueField="id" Width="105px"
OnSelectedIndexChanged="ddltype_OnSelectedIndexchanged">
<asp:ListItem Text="--请选择类别--" Value="-1"></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SDSTYPE" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand='SELECT "ID", "TYPENAME" FROM "LAND_IMAGETYPE" ORDER BY "TYPENAME"'>
</asp:SqlDataSource>
<br />
<asp:DataList ID="MyDataGrid" runat="server" Width="100%" ItemStyle-VerticalAlign="Top"
CaptionAlign="Bottom" RepeatColumns="3" Height="320px" RepeatDirection="Horizontal">
<ItemTemplate>
<table width="100%">
<tr>
<td align="center">
<a href="imagesDetail.aspx?id=<%#Eval("id") %>" target="_blank">
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("purl") %>' Width="100"
Height="60" /></a>
<br />
<asp:Label ID="Label1" runat="server" Text='<%# Eval("imagename") %>' Font-Size="12px"></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
<asp:Panel ID="panel1" runat="server" Visible="true">
共有<asp:Label ID="lblRecordCount" ForeColor="red" runat="server" />条记录 当前为<asp:Label
ID="lblCurrentPage" ForeColor="red" runat="server" />/
<asp:Label ID="lblPageCount" ForeColor="red" runat="server" />页
<asp:LinkButton ID="lbnFirstPage" Text="首 页" CommandName="0" OnCommand="Page_OnClick"
runat="server" />
<asp:LinkButton ID="lbnPrevPage" Text="上一页" CommandName="prev" OnCommand="Page_OnClick"
runat="server" />
<asp:LinkButton ID="lbnNextPage" Text="下一页" CommandName="next" OnCommand="Page_OnClick"
runat="server" />
<asp:LinkButton ID="lbnLastPage" Text="末 页" CommandName="last" OnCommand="Page_OnClick"
runat="server" />
<asp:DropDownList ID="myDropDownList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="listchanged">
</asp:DropDownList></asp:Panel>
</div>