运用数据库来实现数据分页以及搜索问题
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();
}
}
相关文章推荐
- 运用EasyUI中datagrid读取数据库数据实现分页
- php从PostgreSQL 数据库检索数据,实现分页显示以及根据条件查找数据
- 数据库实现数据分页问题
- jquery将数据以table的形式显示,实现数据统计,分页,以及动态添加,搜索
- JDBC实现数据库的几种基本操作(查询,分页查询,根据关键字进行查询以及插入数据)
- 将excel文件中的商品数据导入到数据库,并实现相关检索以及模糊搜索功能
- Spring与SpringMVC整合,以及实现数据库数据的增删查改和分页操作
- SSM+mybatis数据库实现百万数据分页取出并分页插入Excel中
- Jquery easyUI—datagrid数据表格分页原理以及实现
- 上传文件实现数据采集以及批量导入数据库实例
- SQL Server 2008 数据库复制实现数据同步常见问题
- Repeater进行模板设计以及实现数据的分页显示
- 数据库的连接以及实现控制台对对数据的增删查改
- 在Java中实现.net中DataTable功能以及操作双数据库的List连接问题解决方案探究
- jsp实现读取数据库数据分页显示
- [转]在Java中实现.net中DataTable功能以及操作双数据库的List连接问题解决方案探究
- Mysql实现数据的不重复写入(insert if not exists)以及新问题:ID自增不连续的解答
- 二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现[谁有源码麻烦贴过来个链接学习学习]
- 如何优化操作大数据量数据库(几十万以上数据)(三。实现小数据量和海量数据的分页显示存储过程)
- easyUi combogrid 实现分页和动态搜索远程数据