以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]固定合计行抄作业出错 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=110420) |
||||
-- 作者:Fox86 -- 发布时间:2017/12/2 16:08:00 -- [求助]固定合计行抄作业出错 参考大师们固定合计行的例子,没有消化吸收,做了个小项目始终不对。 1、合计行第一列不显示“合计”字样 2、筛选树的合计行第一列也不显示“合计” 3、逻辑列在合计行也显示出来了,不需要的 4、最后的列宽不对,表里设置有不显示的列
请老师指导。
[此贴子已经被作者于2017/12/2 16:22:59编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2017/12/2 16:47:00 -- 项目已经加锁,无法运行 |
||||
-- 作者:Fox86 -- 发布时间:2017/12/2 17:02:00 -- 以下是引用有点蓝在2017/12/2 16:47:00的发言:
项目已经加锁,无法运行 有点蓝老师,我重新上传
|
||||
-- 作者:有点蓝 -- 发布时间:2017/12/2 17:51:00 -- 去掉这句代码 hui.Cols(i).Style = sender.Cols(i).Style \'同步列样式
|
||||
-- 作者:Fox86 -- 发布时间:2017/12/2 18:11:00 -- “合计”可以显示了,有点蓝老师。还有一个问题,合计行最后的列宽不对(灰色部分)。 此主题相关图片如下:666.png [此贴子已经被作者于2017/12/2 19:05:26编辑过]
|
||||
-- 作者:Fox86 -- 发布时间:2017/12/2 18:17:00 -- 有点蓝老师,如果第一列隐藏的话,固定行“合计”也会隐藏,有什么办法让“合计”总是显示在可见的第一列。 [此贴子已经被作者于2017/12/2 18:33:42编辑过]
|
||||
-- 作者:Fox86 -- 发布时间:2017/12/3 13:02:00 -- 顶一下,要沉了 |
||||
-- 作者:有点甜 -- 发布时间:2017/12/3 22:13:00 -- Dim sender As object = Args(0) Dim ea As object = Args(1) If sender.Name = "" Then Return Nothing \'没有设置好Table 和底层的关联 If Tables.Contains(sender.Name) = False Then Return Nothing \'不存在就退出 Dim tb As Table = Tables(sender.Name) If tb.GrandTotal Then \'如果处于合计模式 If sender.Rows(sender.Rows.count -1).Top < sender.Height - sender.rows(sender.rows.count -1).Height * 2 Then \'如果原合计行可视 If sender.Controls.ContainsKey("Myhuizong") Then \'删除合计行控件 sender.Controls.RemoveByKey("Myhuizong") End If Else Dim hg As Integer = sender.rows(sender.rows.count -1).Height \'控件高 If hg = -1 Then hg = sender.rows(sender.rows.count -1).HeightDisplay End If Dim gh = sender.Height - 1 If sender.ScrollBarsVisible = 1 OrElse sender.ScrollBarsVisible = 3 Then \'显示了水平滚动条 gh = gh - 19 End If If sender.Controls.ContainsKey("Myhuizong") = False Then \'不存在汇总控件,则添加 Dim huizong As new C1.Win.C1FlexGrid.C1FlexGrid With huizong .name = "Myhuizong" .BorderStyle = C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.None \'无边框 .Cols.Count = sender.Cols.Count .rows.count = 2 .Rows(0).Height = 0 \'隐藏标题行 .Enabled = False \'不能使用控件 End With sender.Controls.add(huizong) \'加入控件 End If Dim hui As C1.Win.C1FlexGrid.C1FlexGrid = sender.Controls("Myhuizong") If sender.ScrollBarsVisible = 0 OrElse sender.ScrollBarsVisible = 2 Then \'显示了垂直滚动条 hui.ScrollBars = 2 Else hui.ScrollBars = 0 End If \'With hui \'调整位置 \'.left = 0 \'.Top = gh - hg - 1 \'.width = sender.width -19 \'.Height = hg + 2 \'.Rows(1).Height = hg \'End With With hui \'调整位置 .left = 0 If sender.Rows(sender.Rows.count -1).Top < sender.Height - sender.rows(sender.rows.count -1).Height * 2 Then .Top = sender.Rows(sender.Rows.count -1).Top \'sender.GetCellRect(sender.Rows.count-1, 1).y Else .top = gh - hg - 1 End If .width = sender.width -19 .Height = hg + 2 .Rows(1).Height = hg End With Dim sLightBlue As C1.Win.C1FlexGrid.CellStyle = hui.Styles.Add("LightBlue") sLightBlue.BackColor = Drawing.Color.PaleGreen Dim i As Integer For i = 0 To sender.Cols.count -1 If sender.Cols(i).width = -1 Then \'同步列宽 hui.Cols(i).width = sender.Cols.DefaultSize Else hui.Cols(i).width = sender.Cols(i).width End If \'hui.Cols(i).Style = sender.Cols(i).Style \'同步列样式 If i > 0 Then hui.SetCellStyle(1,i,sLightBlue) hui.Cols(i).Visible = sender.Cols(i).Visible \'同步隐藏列 Next hui.Cols.Frozen = sender.Cols.Frozen \'同步冻结列 hui.ScrollPosition = sender.ScrollPosition \'同步水平滚动 For i = 1 To sender.Cols.count-1 If hui.Cols(i).visible Then hui(1,i) = "合计" Exit For End If Next For i = 2 To sender.Cols.count -1 If tb.Cols(i-1).GrandTotal Then hui(1,i) = sender.Aggregate(C1.Win.C1FlexGrid.AggregateEnum.Sum,0,i,sender.Rows.count-2,i,1) Else hui(1,i) = Nothing End If Next End If Else \'检查并删除控件 If sender.Controls.ContainsKey("Myhuizong") Then \'删除控件 sender.Controls.RemoveByKey("Myhuizong") End If End If |
||||
-- 作者:Fox86 -- 发布时间:2017/12/4 8:21:00 -- 非常感谢有点甜老师。隐藏列的问题解决了,列宽的问题还在,如下图,是不是因为我最后一列使用了自适应列宽的原因,该怎么修改代码适应列宽呢? 此主题相关图片如下:666.png |
||||
-- 作者:Fox86 -- 发布时间:2017/12/4 8:24:00 -- 还有,合计行对TreeView有时起作用,有时不起作用。
此主题相关图片如下:777.png 此主题相关图片如下:999.png |