动态生成table并实现分页效果心得分享

  前台代码:

  

复制代码 代码如下:

  <table style="width: 100%;">

  <tr>

  <td>

  搜索字: <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

  <asp:Button ID="Button1" runat="server" Text="搜索" OnClick="Button1_Click" />

  </td>

  </tr>

  <tr>

  <td>

  <div id="divmain" runat="server"> </div>

  </td>

  </tr>

  <tr>

  <td>

  <asp:Button ID="btnFirst" runat="server" Text="首页" OnClick="btnFirst_Click" />

  <asp:Button ID="btnPro" runat="server" Text="上一页" OnClick="btnPro_Click" />

  <asp:Button ID="btnNext" runat="server" Text="下一页" OnClick="btnNext_Click" />

  <asp:Button ID="btnLast" runat="server" Text="末页" OnClick="btnLast_Click" />

  <asp:Label ID="labCountPage" runat="server"></asp:Label>

  <asp:Label ID="labpage" runat="server"></asp:Label>

  <asp:TextBox ID="TextBox2" runat="server" Width="16px"></asp:TextBox>

  <asp:Button ID="btnGo" runat="server" OnClick="btnGo_Click" Text="Go" />

  </td>

  </tr>

  </table>

  后台代码:

  

复制代码 代码如下:

  protected void Page_Load(object sender, EventArgs e)

  {

  if (!IsPostBack)

  {

  ViewState["pageIndex"] = 1;

  dataPage();

  }

  }

  private void dataPage()

  {

  string constr = @"data source=.;initial catalog=News;user id=sa;password=111111;";

  SqlConnection conn = new SqlConnection(constr);

  conn.Open();

  SqlCommand cmd = conn.CreateCommand();

  #region 用存储过程实现数据分页效果

  //cmd.CommandType = CommandType.StoredProcedure;

  //cmd.CommandText = "Pro_SelectNewsPage";

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

  //cmd.Parameters.AddWithValue("@pageSize", 3);

  //SqlParameter parm = new SqlParameter("@count", SqlDbType.Int);

  //cmd.Parameters.Add(parm);

  //parm.Direction = ParameterDirection.Output;

  #endregion

  #region 传递SQl语句实现分页并对搜索实现分页默认显示两条记录

  cmd.CommandType = CommandType.Text;

  cmd.CommandText = "select top 2 * from (select * from T_News where NewsTitle like @title) as t where t.Id not in(select top ((@pageIndex-1)*2) t.Id from (select * from T_News where NewsTitle like @title) as t) order by t.Id";

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

  cmd.Parameters.AddWithValue("@title","%"+TextBox1.Text.Trim()+"%");

  #endregion

  SqlDataAdapter adapter = new SqlDataAdapter(cmd);

  DataTable dt = new DataTable();

  adapter.Fill(dt);

  //ViewState["pageCount"] = parm.Value;

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

  cmd.Parameters.AddWithValue("@titles", "%" + TextBox1.Text.Trim() + "%");

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

  if (sum % 2 == 0)

  {

  ViewState["pageCount"] = sum/2;

  }

  else

  {

  ViewState["pageCount"] = sum / 2 + 1;

  }

  conn.Close();

  conn.Dispose();

  StringBuilder sb = new StringBuilder();

  sb.Append("<table>");

  foreach (DataRow row in dt.Rows)

  {

  sb.Append("<tr><td>"+row["NewsTitle"].ToString()+"</td>");

  sb.Append("<td>" + row["NewsContent"].ToString() + "</td>");

  sb.Append("<td>" + row["CreateTime"].ToString() + "</td></tr>");

  }

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

  divmain.InnerHtml = sb.ToString();

  labCountPage.Text = "总共" + ViewState["pageCount"] + "页";

  labpage.Text = "当前第" + ViewState["pageIndex"] + "页";

  }

  protected void Button1_Click(object sender, EventArgs e)

  {

  ViewState["pageIndex"] = "1";

  dataPage();

  }

  protected void btnFirst_Click(object sender, EventArgs e)

  {

  ViewState["pageIndex"] = "1";

  dataPage();

  }

  protected void btnPro_Click(object sender, EventArgs e)

  {

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

  index--;

  if (index >= 1)

  {

  ViewState["pageIndex"] = index;

  dataPage();

  }

  }

  protected void btnNext_Click(object sender, EventArgs e)

  {

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

  index++;

  if (index <= Convert.ToInt32(ViewState["pageCount"]))

  {

  ViewState["pageIndex"] = index;

  dataPage();

  }

  }

  protected void btnLast_Click(object sender, EventArgs e)

  {

  ViewState["pageIndex"] =ViewState["pageCount"];

  dataPage();

  }

  protected void btnGo_Click(object sender, EventArgs e)

  {

  int i=Convert.ToInt32(TextBox2.Text);

  if (i > 0 && i <= Convert.ToInt32(ViewState["pageCount"]))

  {

  ViewState["pageIndex"] = i;

  dataPage();

  }

  }