ASP.Net GridView使用GridViewHelper分组时BranchCode重复问题如何解决
你出现BranchCode重复展示的核心原因是将GridViewHelper的初始化、分组注册逻辑写在了RowDataBound事件中,该事件会在GridView每一行完成数据绑定时触发一次,相当于你重复多次注册了分组规则,导致同一个BranchCode被多次生成分组头,最终出现重复。
解决方法
- 第一步:把GridViewHelper的相关逻辑从
gvViewReport_RowDataBound中全部移除,该逻辑全局只需要执行1次即可 - 第二步:将GridViewHelper初始化、分组注册逻辑放到GridView绑定数据的逻辑中,放在
DataBind()执行之前调用 - 第三步:确认数据源已经按
BranchCode字段排序,相同BranchCode的行需要连续排列,否则也可能出现分组头重复的问题
参考代码
// 数据绑定方法,全局仅执行一次初始化逻辑 private void LoadReportData() { // 1. 获取你的业务数据源 DataTable reportData = GetYourReportDataSource(); // 2. 绑定数据源前初始化GridViewHelper GridViewHelper helper = new GridViewHelper(this.gvViewReport); helper.RegisterGroup("BranchCode", true, true); helper.GroupHeader += new GroupEvent(helper_GroupHeader); helper.ApplyGroupSort(); // 3. 执行GridView绑定 gvViewReport.DataSource = reportData; gvViewReport.DataBind(); } // 页面首次加载时触发绑定 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { LoadReportData(); } } // 行绑定事件中不再处理GridViewHelper相关逻辑 protected void gvViewReport_RowDataBound(object sender, GridViewRowEventArgs e) { // 仅保留你原本的行数据渲染、格式调整等业务逻辑即可 }
内容的提问来源于stack exchange,提问作者mINI
相关产品推荐
相关产品推荐

