asp.net Repeater显示父子表数据,无闪烁

  效果图如下:

  源代码如下:

  

复制代码 代码如下:

  using System;

  using System.Data;

  using System.Configuration;

  using System.Collections;

  using System.Web;

  using System.Web.Security;

  using System.Web.UI;

  using System.Web.UI.WebControls;

  using System.Web.UI.WebControls.WebParts;

  using System.Web.UI.HtmlControls;

  namespace RepeaterTest

  {

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

  {

  protected void Page_Load(object sender, EventArgs e)

  {

  if (!Page.IsPostBack)

  {

  this.bind();

  }

  }

  private DataSet dataSource

  {

  get

  {

  if (ViewState["ds"] != null)

  {

  return (DataSet)ViewState["ds"];

  }

  else

  {

  DataSet ds = DataSource.GetDataSet();

  ViewState["ds"] = ds;

  return ds;

  }

  }

  }

  private void bind()

  {

  DataSet ds = this.dataSource;

  this.Repeater1.DataSource = ds.Tables["tbclass"];

  this.Repeater1.DataBind();

  this.Repeater2.DataSource = ds.Tables["tbclass"];

  this.Repeater2.DataBind();

  }

  protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)

  {

  if (e.CommandName == "expand")

  {

  LinkButton btn = (LinkButton)e.CommandSource;

  GridView grid =(GridView)btn.Parent.FindControl("grid1");

  if (btn.Text == "+")

  {

  btn.Text = "-";

  grid.Visible = true;

  }

  else

  {

  btn.Text = "+";

  grid.Visible = false;

  }

  }

  }

  protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)

  {

  DataTable dt = this.dataSource.Tables["tbstu"];

  LinkButton objButton = (LinkButton)e.Item.FindControl("btnExpand");

  if (objButton != null && objButton.CommandArgument !="")

  {

  string classID = objButton.CommandArgument;

  dt.DefaultView.RowFilter = "ClassID=" + classID;

  DataTable dtStu = dt.DefaultView.ToTable();

  GridView grid = (GridView)e.Item.FindControl("grid1");

  grid.DataSource = dtStu;

  grid.DataBind();

  }

  }

  protected void Repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e)

  {

  DataTable dt = this.dataSource.Tables["tbstu"];

  Label objlbl = (Label)e.Item.FindControl("lblclassid");

  if (objlbl != null && objlbl.Text != "")

  {

  string classID = objlbl.Text;

  dt.DefaultView.RowFilter = "ClassID=" + classID;

  DataTable dtStu = dt.DefaultView.ToTable();

  GridView grid = (GridView)e.Item.FindControl("grid2");

  grid.DataSource = dtStu;

  grid.DataBind();

  }

  }

  }

  }

  文件打包下载RepeaterTest.rar

  有用得着的同志可以参考..