项目里面的测试代码,仅供参考
<title>Ajax登陆</title>
<script src="Scripts/common.js" type="text/javascript"></script>
<script type="text/javascript">
var xhr;
window.onload = function () {
xhr = new createXmlHttp();
gel("btnLogin").onclick = loginByAjax;
}
function loginByAjax() {
gel("msgImg").src = "Images/load.gif";
var uName = gel("txtUserName").value;
var uPwd = gel("txtPwd").value;
var urlStr = "DoLogin.ashx"
var data = "uName=" + uName + "&uPwd=" + uPwd;
xhr.open("POST", urlStr, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
var responseText = xhr.responseText;
if (responseText == "1") {
alert("登陆成功");
window.location = "Default.aspx";
}
else {
alert("登陆失败");
}
}
}
}
xhr.send(data);
}
</script>
public partial class Default : System.Web.UI.Page
{
protected StringBuilder sbTableContent = new StringBuilder();
protected string PageHtml = string.Empty;
protected int nextPage = 1;
protected int nowPage = 1;
BLL.StudentManager studentManager = new BLL.StudentManager();
protected void Page_Load(object sender, EventArgs e)
{
//加载
//加载之前先判断是否登陆
if (new WebHelper().IsLogin())
{
LoadList();
}
else
{
Response.Redirect("AjaxLogin.aspx");
}
}
private void LoadList()
{
int initRowCount=0;
int initPageCount=0;
MyPage page = new MyPage();
page.TryParseCurrentPageIndex(Request.QueryString["page"]);
List<Model.Students> listStudents = studentManager.QueryListByPageIndexPro(page.CurrentPageIndex,page.PageSize , out initRowCount, out initPageCount);
page.PageCount = initPageCount;
page.TotalCount = initRowCount;
page.UrlFormat = "Default.aspx?page={n}";
PageHtml = page.RenderToHTML();
int index = (page.CurrentPageIndex - 1) * page.PageSize + 1;
if (listStudents!=null)
{
foreach (Model.Students model in listStudents)
{
sbTableContent.Append("<tr><td>" + index.ToString()+ "</td>");
sbTableContent.Append("<td>"+model.SClasses.CName+"</td>");
sbTableContent.Append("<td>"+model.SLoginName+"</td>");
sbTableContent.Append("<td>"+model.SCnName+"</td>");
sbTableContent.Append("<td>"+(model.SGender.Value?"男":"女")+"</td>");
sbTableContent.Append("<td>"+model.STel+"</td>");
sbTableContent.Append("<td>"+model.SAddtime.Value.ToShortDateString()+"</td>");
sbTableContent.Append("<td><a href='Modify.aspx?id="+model.SID.ToString()+"'>修改</a> <a href='javascript:doDel("+model.SID.ToString()+")'>删除</a>");
index++;
}
}
}
}
public class MyPage
{
public int TotalCount { get; set; }
public int PageSize { get; set; }
public int CurrentPageIndex { get; set; }
public int MaxPageCount { get; set; }
public string UrlFormat { get; set; }
public int PageCount { get; set; }
public MyPage()
{
PageSize = 4;
MaxPageCount = 10;
}
private void Check()
{
System.Diagnostics.Debug.Assert(PageSize>0);
System.Diagnostics.Debug.Assert(CurrentPageIndex>0);
System.Diagnostics.Debug.Assert(!string.IsNullOrWhiteSpace(UrlFormat));
}
public void TryParseCurrentPageIndex(string pn)
{
int temp;
if (int.TryParse(pn,out temp))
{
CurrentPageIndex = temp;
}
else
{
CurrentPageIndex = 1;
}
}
public string RenderToHTML()
{
Check();
StringBuilder sb = new StringBuilder();
//double tempCount = (TotalCount+(0.0) )/ PageSize;
//int pageCount = (int)Math.Ceiling(tempCount);
int visibleStart = CurrentPageIndex - MaxPageCount / 2;
if (visibleStart<1)//6还是没区别
{
visibleStart = 1;
}
int visibleEnd = visibleStart + MaxPageCount;
if (visibleEnd > PageCount)
{
visibleEnd = PageCount;
}
if (CurrentPageIndex>1)
{
sb.Append(GetPageLink(1,"首页"));
sb.Append(GetPageLink(CurrentPageIndex-1,"上一页"));
}
else
{
sb.Append("<span>首页</span>");
sb.Append("<span>上一页</span>");
}
for (int i = visibleStart; i <=visibleEnd; i++)
{
if (i==CurrentPageIndex)
{
sb.Append("<span>").Append(i).Append("</span>");
}
else
{
sb.Append(GetPageLink(i,i.ToString()));
}
}
if (CurrentPageIndex < PageCount)
{
sb.Append(GetPageLink(CurrentPageIndex+1,"下一页"));
sb.Append(GetPageLink(PageCount, "末页"));
}
else
{
sb.Append("<span>下一页</span>");
sb.Append("<span>末页</span>");
}
return sb.ToString();
}
private string GetPageLink(int i,string text)
{
StringBuilder sb = new StringBuilder();
string url = UrlFormat.Replace("{n}",i.ToString());
sb.Append("<a href='").Append(url).Append("'>").Append(text).Append("</a>") ;
return sb.ToString();
}
}
public List<Model.Students> QueryListByPageIndexPro(int pageIndex,int pageSize,out int rowCount,out int pageCount)
{
Model.Students model = null;
DataTable dt = dbHelper.ExecProForPageList(pageIndex, pageSize, out rowCount, out pageCount);
List<Model.Students> list = null;
if (dt.Rows.Count>0)
{
list = new List<Model.Students>();
foreach (DataRow dr in dt.Rows)
{
model = new Model.Students();
SetDr2Model(dr,model);
list.Add(model);
}
}
return list;
}
public DataTable ExecProForPageList(int pageIndex, int pageSize, out int rowCount, out int pageCount)
{
SqlParameter[] parameters =
{
new SqlParameter("@PageIndex",SqlDbType.Int,4),
new SqlParameter("@PageSize",SqlDbType.Int,4),
new SqlParameter("@RowCount",SqlDbType.Int,4),
new SqlParameter("@PageCount",SqlDbType.Int,4)
};
parameters[0].Value = pageIndex;
parameters[1].Value = pageSize;
parameters[2].Direction = ParameterDirection.Output;
parameters[3].Direction = ParameterDirection.Output;
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "GetPageDataOutRowPageCount";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = Connection;
cmd.Parameters.AddRange(parameters);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adapter.Fill(dt);
rowCount = Convert.ToInt32(parameters[2].Value);
pageCount = Convert.ToInt32(parameters[3].Value);
return dt;
}
Create PROCEDURE [dbo].[GetPageDataOutRowPageCount]
(
@PageIndex int = 1,--当前页数
@PageSize int = 1,--每页大小
@RowCount int output,--总行数(传出参数)
@PageCount int output--总页数(传出参数)
)
AS
begin
DECLARE @sql NVARCHAR(225),@sqlCount NVARCHAR(225)
select @RowCount =COUNT(SID),@PageCount=CEILING((COUNT(SID)+0.0)/@PageSize) FROM Students where SIsDel=0
SET @sql='SELECT TOP '+str(@PageSize) +' * FROM Students,Classes where SCID=CID and SIsDel=0 and SID not in(select top '+str((@PageIndex-1)*@PageSize) +' SID from Students where SIsDel=0)order by SID'
print @sql
EXEC(@sql)
end