您的位置:首页 > 数据库

运用数据库来实现数据分页以及搜索问题

2013-03-13 20:04 501 查看

===========前台========

<body>

<form id="form1" runat="server">

<div>

<table>

<tr><td>

新闻:<asp:TextBox ID="txtName" runat="server"></asp:TextBox>

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="查询" /></td></tr>

<tr><td><div id="divResult" runat="server"></div></td></tr>

<tr><td>

<asp:LinkButton ID="btFirst" runat="server" onclick="btFirst_Click">第一页</asp:LinkButton>

<asp:LinkButton ID="btPro" runat="server" onclick="btPro_Click">上一页</asp:LinkButton>

<asp:LinkButton ID="btNext" runat="server" onclick="btNext_Click">下一页</asp:LinkButton>

<asp:LinkButton ID="btLast" runat="server" onclick="btLast_Click">最后一页</asp:LinkButton>

</td></tr>

</table>

</div>

</form>

</body>

===========后台========

public partial class WebForm1 : System.Web.UI.Page

{

int pagesize = 3;

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

//ViewState["pageindex"]为视图模式,它一般是指为了防止假如第一页的页面刷新后,怎么加都是第二页的情况,利用视图模式,就可以防止视图刷新后不再累加的情况,例如:下一页:pageindex++;

ViewState["pageindex"] = 1;//虽然是定义在一加载就显示的看似是局部变量的变量,但是它课已全部在下面的内容中调用它

DataLoad();

DataCount();

}

}

string strcon = @"data source=.;initial catalog=数据库名;user id=数据库的机名;password=数据库的机名密码";

private void DataLoad()

{

SqlConnection con = new SqlConnection(strcon);

con.Open();

SqlCommand cmd = new SqlCommand();

cmd.Connection = con;

cmd.CommandText = "select top(@pagesize) * from T_News where (NewsTitle like @maxid or NewsContent like @maxid)and Id not in(select top ((@pageindex-1)*@pagesize) Id from T_News where NewsTitle like @maxid or NewsContent like @maxid order by Id)";

cmd.Parameters.AddWithValue("@pageindex", Convert.ToInt32(ViewState["pageindex"]));

cmd.Parameters.AddWithValue("@pagesize", pagesize);

cmd.Parameters.AddWithValue("@maxid", "%" + txtName.Text + "%");

SqlDataAdapter adpter = new SqlDataAdapter(cmd);

DataTable dt = new DataTable();

adpter.Fill(dt);

con.Dispose();

cmd.Dispose();

StringBuilder sb1 = new StringBuilder();

sb1.Append("<table border=1>");

for (int i = 0; i < dt.Rows.Count; i++)

{

sb1.Append("<tr>");

sb1.Append("<td>" + dt.Rows[i]["NewsTitle"].ToString() + "</td>");

sb1.Append("<td>" + dt.Rows[i]["NewsContent"].ToString() + "</td>");

sb1.Append("<td>" + dt.Rows[i]["CreateTime"] + "</td>");

sb1.Append("</tr>");

}

sb1.Append("</table>");

divResult.InnerHtml = sb1.ToString();

}

private void DataCount()

{

SqlConnection con = new SqlConnection(strcon);

SqlCommand cmd = new SqlCommand();

cmd.Connection = con;

cmd.CommandText = "select count(*) from T_News where NewsTitle like @newskey or NewsContent like @newskey";

con.Open();

cmd.Parameters.AddWithValue("@newskey", "%" + txtName.Text + "%");

int totalcount = Convert.ToInt32(cmd.ExecuteScalar());

if (totalcount % pagesize == 0)//判定totalcount可以是 pagesize它的整倍数,意思是可以除尽

{

ViewState["pagelastindex"] = totalcount / pagesize;

}

else

{

ViewState["pagelastindex"] = totalcount / pagesize + 1;

}

}

protected void Button1_Click(object sender, EventArgs e)

{

ViewState["pageindex"] = 1;

DataCount();

DataLoad();

}

protected void btFirst_Click(object sender, EventArgs e)

{

int pageindex = Convert.ToInt32(ViewState["pageindex"]);

pageindex = 1;

ViewState["pageindex"] = pageindex;

DataLoad();

}

protected void btPro_Click(object sender, EventArgs e)

{

int pageindex = Convert.ToInt32(ViewState["pageindex"]);

if (pageindex > 1)

{

pageindex--;

ViewState["pageindex"] = pageindex;

DataLoad();

}

}

protected void btNext_Click(object sender, EventArgs e)

{

int pageindex = Convert.ToInt32(ViewState["pageindex"]);

if (pageindex < Convert.ToInt32(ViewState["pagelastindex"]))

{

pageindex++;

ViewState["pageindex"] = pageindex;

DataLoad();

}

}

protected void btLast_Click(object sender, EventArgs e)

{

ViewState["pageindex"] = ViewState["pagelastindex"];

DataLoad();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐