.NET WebForm GridView跨行合并

OnDataBound事件中实现

        /// <summary>
        /// 数据绑定事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gvInfo_DataBound(object sender, EventArgs e)
        {
            string workGroupId = "";
            int startRow = 0;
            int endRow = 0;
            int rowCount = gvInfo.Rows.Count;
            List<GridViewGroupDto> gridViewGroups = new List<GridViewGroupDto>();
            foreach (GridViewRow row in gvInfo.Rows)
            {
                var rowIndex = row.RowIndex;
                endRow = rowIndex;
                HiddenField hidWorkGroupID = (HiddenField)row.FindControl("hidWorkGroupID");
                string currWorkGroupId = hidWorkGroupID.Value;
                if (rowIndex == 0)
                {
                    workGroupId = currWorkGroupId;
                    startRow = rowIndex;
                }
                else if (rowIndex == rowCount - 1)
                {
                    GridViewGroupDto item = new GridViewGroupDto();
                    item.WorkGroupID = currWorkGroupId;
                    item.StartRowIndex = (workGroupId != currWorkGroupId) ? rowIndex : startRow;
                    item.EndRowIndex = rowIndex;
                    gridViewGroups.Add(item);
                }
                else
                {
                    if (workGroupId != currWorkGroupId)
                    {
                        GridViewGroupDto item = new GridViewGroupDto();
                        item.WorkGroupID = workGroupId;
                        item.StartRowIndex = startRow;
                        item.EndRowIndex = endRow - 1;
                        gridViewGroups.Add(item);
                        workGroupId = currWorkGroupId;
                        startRow = rowIndex;
                    }
                }
            }
            //跨行设置
            foreach (var data in gridViewGroups)
            {
                int startIndex = data.StartRowIndex;
                int endIndex = data.EndRowIndex;
                int diff = endIndex - startIndex + 1;
                for (int i = startIndex + 1; i <= endIndex; i++)
                {
                    gvInfo.Rows[i].Cells[0].Visible = false;
                    gvInfo.Rows[i].Cells[3].Visible = false;
                    gvInfo.Rows[i].Cells[5].Visible = false;
                    gvInfo.Rows[i].Cells[6].Visible = false;
                }
                gvInfo.Rows[startIndex].Cells[0].RowSpan = diff;
                gvInfo.Rows[startIndex].Cells[3].RowSpan = diff;
                gvInfo.Rows[startIndex].Cells[5].RowSpan = diff;
                gvInfo.Rows[startIndex].Cells[6].RowSpan = diff;
            }
        }

注:我是主要根据绑定数据的某个字段进行分组,记录每组数据的开始和结束行索引,实现跨行 

附实现效果图

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET WebForm 是一种用于构建动态网页的技术框架,可以通过使用它提供的控件和事件模型来开发各种功能丰富的网页应用程序。要实现审批流,可以按照以下步骤进: 1. 数据库设计:首先,需要设计一个数据库来存储审批流相关的数据。可以创建一个“审批表(Approval)”来存储审批流的信息,例如审批ID、审批标题、申请人、审批状态等。 2. 创建页面:使用ASP.NET WebForm创建一个审批页面。可以通过使用ASP.NET控件,如GridView、Repeater等来展示审批列表或者审批详情。还可以通过Label、TextBox等控件来收集用户输入的审批意见。 3. 编写代码逻辑:在页面的代码文件中,可以编写逻辑来处理审批流。可以使用ASP.NET提供的事件模型,例如按钮的Click事件,来触发审批流的处理逻辑。例如,点击“通过”按钮后,可以更新数据库中的审批状态,并发送通知邮件给下一个审批人;点击“拒绝”按钮后,可以更新审批状态,并发送通知邮件给申请人。 4. 审批流控制:审批流通常是由多个环节构成的。可以使用ASP.NET WebForm中的页面导航控件(如MultiView)来控制审批流程的流转。可以通过编写代码来判断当前审批人是谁,根据审批人的决策来显示不同的页面视图。 5. 审批历史记录:审批流一般需要记录审批的历史记录。可以在数据库中创建一个“审批历史记录表(ApprovalHistory)”,用于存储每次审批的详细信息。可以在每次审批流程处理完成后,将相关信息记录到表中。 通过以上步骤,就可以在ASP.NET WebForm中实现一个基本的审批流。当然,具体的实现方式还取决于实际需求和业务流程,并可以根据具体情况进定制和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值