请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

credream

中级会员

110

主题

296

帖子

828

积分

中级会员

积分
828

活字格认证

credream
中级会员   /  发表于:2018-12-30 17:16  /   查看:2907  /  回复:5
我们目前做升级,之前用的旧版本的truedbgrid可以把列头,拖拽到header部分,然后拖拽后显示出了排序下三角,
并且点击列头,不能实现排序,但是点击拖拽后的按钮可以实现排序。
升级前的:

新版本的,首先没找到如何单独设置某列可以排序,其次拖拽后,拖到顶部,如果设置了truedbgrid.allowsort=true,这个时候,
点击列头可以排序,点击拖拽后的头部不能排序。另外拖拽后,数据显示的样式也变了更升级前的差别很大。
升级后的:


问:能通过修改代码的方式,实现向旧版本那样吗?
1.拖拽后数据显示样式不变
2.拖拽前没有排序按钮,拖拽后显示排序按钮,并且排序按钮是黑色下三角
3.点击拖拽后在顶部的列头可以实现排序,点击表中的对应列头虽然显示排序按钮但不能排序

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

5 个回复

倒序浏览
JeffryLI
葡萄城公司职员   /  发表于:2019-1-2 11:55:50
沙发
您好,
1、我们这边没有重现拖拽分组的样式变了的问题,可否给我们一个demo
2、拖拽之后,原来的列属性会跟随列到header上
3、这如2所有,属性都是一样的,没有办法分开处理,
请知悉。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
credream
中级会员   /  发表于:2019-1-7 11:49:25
板凳
JeffryLI 发表于 2019-1-2 11:55
您好,
1、我们这边没有重现拖拽分组的样式变了的问题,可否给我们一个demo
2、拖拽之后,原来的列属性会 ...

您好,谢谢您的回复,第一个问题,拖拽分组后,确实是变了样式,原来有5列的话,会显示成一列,展开一列后,才可以看到后几列,而之前版本的vb6效果是,拖拽后,还是会显示这几列,不会分开.

由于我们这边网络限制,只能贴代码了:
新建Form1.vb
Imports C1.Win.C1TrueDBGrid
Public Class Form1
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim i As Integer
        Dim col As C1.Win.C1TrueDBGrid.C1DataColumn
        Dim dis As C1.Win.C1TrueDBGrid.C1DisplayColumn
        Dim xa As New DataTable
        Dim dc As DataColumn
        With C1TrueDBGrid2
            .Splits(0).ColumnCaptionHeight = 1 * 17
            .AllowColSelect = False
            .AllowColMove = True
            .AllowRowSelect = True
            .Splits(0).RecordSelectors = True
            .Splits(0).Style.HorizontalAlignment = C1.Win.C1TrueDBGrid.AlignHorzEnum.Center
            .Splits(0).Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center
            .AllowArrows = False
            .WrapCellPointer = True
            .ExtendRightColumn = True
            .MarqueeStyle = MarqueeEnum.FloatingEditor
        End With
        For i = 0 To 4
            col = C1TrueDBGrid2.Columns(i)
            dis = C1TrueDBGrid2.Splits(0).DisplayColumns(i)
            dc = New DataColumn
            dis.AllowFocus = True
            dis.Locked = False
            dis.Visible = True
            col.DataField = "column_" & i
            dc.ColumnName = col.DataField
            xa.Columns.Add(dc)
        Next
        xa.Rows.Add(xa.NewRow)
        xa.Rows.Add(xa.NewRow)
        xa.Rows.Add(xa.NewRow)
        xa.Rows.Add(xa.NewRow)
        C1TrueDBGrid2.SetDataBinding(xa, "", True)
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        Call Button2_Click(Nothing, Nothing)
    End Sub
End Class
------------------
FromDesigner.vb
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class Form1
    Inherits System.Windows.Forms.Form
    'フォームがコンポーネントの一覧をクリーンアップするために dispose をオーバーライドします。
    <System.Diagnostics.DebuggerNonUserCode()>
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        Try
            If disposing AndAlso components IsNot Nothing Then
                components.Dispose()
            End If
        Finally
            MyBase.Dispose(disposing)
        End Try
    End Sub
    'Windows フォーム デザイナーで必要です。
    Private components As System.ComponentModel.IContainer
    'メモ: 以下のプロシージャは Windows フォーム デザイナーで必要です。
    'Windows フォーム デザイナーを使用して変更できます。  
    'コード エディターを使って変更しないでください。
    <System.Diagnostics.DebuggerStepThrough()>
    Private Sub InitializeComponent()
        Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
        Me.Button2 = New System.Windows.Forms.Button()
        Me.C1TrueDBGrid2 = New C1.Win.C1TrueDBGrid.C1TrueDBGrid()
        CType(Me.C1TrueDBGrid2, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        'Button2
        '
        Me.Button2.Location = New System.Drawing.Point(162, 38)
        Me.Button2.Name = "Button2"
        Me.Button2.Size = New System.Drawing.Size(75, 23)
        Me.Button2.TabIndex = 18
        Me.Button2.Text = "Button2"
        Me.Button2.UseVisualStyleBackColor = True
        '
        'C1TrueDBGrid2
        '
        Me.C1TrueDBGrid2.AllowColMove = False
        Me.C1TrueDBGrid2.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.GroupBy
        Me.C1TrueDBGrid2.FlatStyle = C1.Win.C1TrueDBGrid.FlatModeEnum.Standard
        Me.C1TrueDBGrid2.GroupByCaption = "列でグループ化するには、ここに列ヘッダをドラッグします。"
        Me.C1TrueDBGrid2.Images.Add(CType(resources.GetObject("C1TrueDBGrid2.Images"), System.Drawing.Image))
        Me.C1TrueDBGrid2.LinesPerRow = 1
        Me.C1TrueDBGrid2.Location = New System.Drawing.Point(162, 67)
        Me.C1TrueDBGrid2.MarqueeStyle = C1.Win.C1TrueDBGrid.MarqueeEnum.FloatingEditor
        Me.C1TrueDBGrid2.Name = "C1TrueDBGrid2"
        Me.C1TrueDBGrid2.PreviewInfo.Caption = "印刷プレビューウィンドウ"
        Me.C1TrueDBGrid2.PreviewInfo.Location = New System.Drawing.Point(0, 0)
        Me.C1TrueDBGrid2.PreviewInfo.Size = New System.Drawing.Size(0, 0)
        Me.C1TrueDBGrid2.PreviewInfo.ZoomFactor = 75.0R
        Me.C1TrueDBGrid2.PrintInfo.MeasurementDevice = C1.Win.C1TrueDBGrid.PrintInfo.MeasurementDeviceEnum.Screen
        Me.C1TrueDBGrid2.PrintInfo.MeasurementPrinterName = Nothing
        Me.C1TrueDBGrid2.PrintInfo.PageSettings = CType(resources.GetObject("C1TrueDBGrid2.PrintInfo.PageSettings"), System.Drawing.Printing.PageSettings)
        Me.C1TrueDBGrid2.PropBag = resources.GetString("C1TrueDBGrid2.PropBag")
        Me.C1TrueDBGrid2.RecordSelectors = False
        Me.C1TrueDBGrid2.Size = New System.Drawing.Size(703, 346)
        Me.C1TrueDBGrid2.TabAction = C1.Win.C1TrueDBGrid.TabActionEnum.GridNavigation
        Me.C1TrueDBGrid2.TabIndex = 19
        Me.C1TrueDBGrid2.UseCompatibleTextRendering = False
        '
        'Form1
        '
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(1226, 557)
        Me.Controls.Add(Me.C1TrueDBGrid2)
        Me.Controls.Add(Me.Button2)
        Me.Name = "Form1"
        Me.Text = "Form1"
        CType(Me.C1TrueDBGrid2, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)
    End Sub
    Friend WithEvents Button2 As Button
    Friend WithEvents C1TrueDBGrid2 As C1.Win.C1TrueDBGrid.C1TrueDBGrid
End Class
回复 使用道具 举报
credream
中级会员   /  发表于:2019-1-7 11:49:39
地板
JeffryLI 发表于 2019-1-2 11:55
您好,
1、我们这边没有重现拖拽分组的样式变了的问题,可否给我们一个demo
2、拖拽之后,原来的列属性会 ...

您好,谢谢您的回复,第一个问题,拖拽分组后,确实是变了样式,原来有5列的话,会显示成一列,展开一列后,才可以看到后几列,而之前版本的vb6效果是,拖拽后,还是会显示这几列,不会分开.

由于我们这边网络限制,只能贴代码了:
新建Form1.vb
Imports C1.Win.C1TrueDBGrid
Public Class Form1
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim i As Integer
        Dim col As C1.Win.C1TrueDBGrid.C1DataColumn
        Dim dis As C1.Win.C1TrueDBGrid.C1DisplayColumn
        Dim xa As New DataTable
        Dim dc As DataColumn
        With C1TrueDBGrid2
            .Splits(0).ColumnCaptionHeight = 1 * 17
            .AllowColSelect = False
            .AllowColMove = True
            .AllowRowSelect = True
            .Splits(0).RecordSelectors = True
            .Splits(0).Style.HorizontalAlignment = C1.Win.C1TrueDBGrid.AlignHorzEnum.Center
            .Splits(0).Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center
            .AllowArrows = False
            .WrapCellPointer = True
            .ExtendRightColumn = True
            .MarqueeStyle = MarqueeEnum.FloatingEditor
        End With
        For i = 0 To 4
            col = C1TrueDBGrid2.Columns(i)
            dis = C1TrueDBGrid2.Splits(0).DisplayColumns(i)
            dc = New DataColumn
            dis.AllowFocus = True
            dis.Locked = False
            dis.Visible = True
            col.DataField = "column_" & i
            dc.ColumnName = col.DataField
            xa.Columns.Add(dc)
        Next
        xa.Rows.Add(xa.NewRow)
        xa.Rows.Add(xa.NewRow)
        xa.Rows.Add(xa.NewRow)
        xa.Rows.Add(xa.NewRow)
        C1TrueDBGrid2.SetDataBinding(xa, "", True)
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        Call Button2_Click(Nothing, Nothing)
    End Sub
End Class
------------------
FromDesigner.vb
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class Form1
    Inherits System.Windows.Forms.Form
    'フォームがコンポーネントの一覧をクリーンアップするために dispose をオーバーライドします。
    <System.Diagnostics.DebuggerNonUserCode()>
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        Try
            If disposing AndAlso components IsNot Nothing Then
                components.Dispose()
            End If
        Finally
            MyBase.Dispose(disposing)
        End Try
    End Sub
    'Windows フォーム デザイナーで必要です。
    Private components As System.ComponentModel.IContainer
    'メモ: 以下のプロシージャは Windows フォーム デザイナーで必要です。
    'Windows フォーム デザイナーを使用して変更できます。  
    'コード エディターを使って変更しないでください。
    <System.Diagnostics.DebuggerStepThrough()>
    Private Sub InitializeComponent()
        Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
        Me.Button2 = New System.Windows.Forms.Button()
        Me.C1TrueDBGrid2 = New C1.Win.C1TrueDBGrid.C1TrueDBGrid()
        CType(Me.C1TrueDBGrid2, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        'Button2
        '
        Me.Button2.Location = New System.Drawing.Point(162, 38)
        Me.Button2.Name = "Button2"
        Me.Button2.Size = New System.Drawing.Size(75, 23)
        Me.Button2.TabIndex = 18
        Me.Button2.Text = "Button2"
        Me.Button2.UseVisualStyleBackColor = True
        '
        'C1TrueDBGrid2
        '
        Me.C1TrueDBGrid2.AllowColMove = False
        Me.C1TrueDBGrid2.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.GroupBy
        Me.C1TrueDBGrid2.FlatStyle = C1.Win.C1TrueDBGrid.FlatModeEnum.Standard
        Me.C1TrueDBGrid2.GroupByCaption = "列でグループ化するには、ここに列ヘッダをドラッグします。"
        Me.C1TrueDBGrid2.Images.Add(CType(resources.GetObject("C1TrueDBGrid2.Images"), System.Drawing.Image))
        Me.C1TrueDBGrid2.LinesPerRow = 1
        Me.C1TrueDBGrid2.Location = New System.Drawing.Point(162, 67)
        Me.C1TrueDBGrid2.MarqueeStyle = C1.Win.C1TrueDBGrid.MarqueeEnum.FloatingEditor
        Me.C1TrueDBGrid2.Name = "C1TrueDBGrid2"
        Me.C1TrueDBGrid2.PreviewInfo.Caption = "印刷プレビューウィンドウ"
        Me.C1TrueDBGrid2.PreviewInfo.Location = New System.Drawing.Point(0, 0)
        Me.C1TrueDBGrid2.PreviewInfo.Size = New System.Drawing.Size(0, 0)
        Me.C1TrueDBGrid2.PreviewInfo.ZoomFactor = 75.0R
        Me.C1TrueDBGrid2.PrintInfo.MeasurementDevice = C1.Win.C1TrueDBGrid.PrintInfo.MeasurementDeviceEnum.Screen
        Me.C1TrueDBGrid2.PrintInfo.MeasurementPrinterName = Nothing
        Me.C1TrueDBGrid2.PrintInfo.PageSettings = CType(resources.GetObject("C1TrueDBGrid2.PrintInfo.PageSettings"), System.Drawing.Printing.PageSettings)
        Me.C1TrueDBGrid2.PropBag = resources.GetString("C1TrueDBGrid2.PropBag")
        Me.C1TrueDBGrid2.RecordSelectors = False
        Me.C1TrueDBGrid2.Size = New System.Drawing.Size(703, 346)
        Me.C1TrueDBGrid2.TabAction = C1.Win.C1TrueDBGrid.TabActionEnum.GridNavigation
        Me.C1TrueDBGrid2.TabIndex = 19
        Me.C1TrueDBGrid2.UseCompatibleTextRendering = False
        '
        'Form1
        '
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(1226, 557)
        Me.Controls.Add(Me.C1TrueDBGrid2)
        Me.Controls.Add(Me.Button2)
        Me.Name = "Form1"
        Me.Text = "Form1"
        CType(Me.C1TrueDBGrid2, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)
    End Sub
    Friend WithEvents Button2 As Button
    Friend WithEvents C1TrueDBGrid2 As C1.Win.C1TrueDBGrid.C1TrueDBGrid
End Class
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2019-1-7 15:53:20
5#
您好,我这边,写个demo验证下。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2019-1-7 17:57:38
6#
您好,在truedbgrid 拖之后会默认折叠起来的,折叠起来就是有分组行的数据,所以看起来只有一列,其他列需要展开看数据
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部