服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

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

2019-06-26 12:41ASP.NET之家 ASP.NET教程

两天在改项目bug,发现以前有人做的repeater显示父子表结构展开和关闭子表数据时总是有闪烁,于是就试着改成无闪烁的,成功了,与大家分享.

效果图如下:

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 
有用得着的同志可以参考..

延伸 · 阅读

精彩推荐