当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net Repeater显示父子表数据,无闪烁

ASP.NET
asp.net 无重复随机数代码
asp.net(C#)中上传大文件的几中常见应用方法
asp.net AJAX实现无刷新获得数据
C#中发送邮件代码
asp.net(c#) RSS功能实现代码
asp.net窗体操作总结
ASP.NET 水晶报表打印功能实现代码
ASP.Net 图片存入数据库的实现代码
让Silverlight 2.0动画动起来Making Silverlight 2.0 animation Start(不能运动原因)
asp.net Reporting Service在Web Application中的应用
C# 文件上传 默认最大为4M的解决方法
asp.net 购物车实现详细代码
asp.net repeater实现批量删除时注册多选框id到客户端
asp.net aspnetpager分页统计时与实际不符的解决办法
iis 服务器应用程序不可用的解决方法
asp.net button 绑定多个参数
asp.net Ajax 安装与卸载方法
Ajax Throws Sys.WebForms.PageRequestManagerErrorException with Response.Redirect的解决方法
asp.net 两个不同页面的传值
C# 可空类型分析

ASP.NET 中的 asp.net Repeater显示父子表数据,无闪烁


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 185 ::
收藏到网摘: n/a

两天在改项目bug,发现以前有人做的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
有用得着的同志可以参考..