找回密码
 立即注册

QQ登录

只需一步,快速开始

chenfeng1029
金牌服务用户   /  发表于:2017-1-30 19:38  /   查看:3035  /  回复:3
查询一个sql语句,把一列设置成checkbox样式,但绑定数据源后,发现数据库值=1的默认没有打勾标记。
不知道哪里设置有问题?
绑定的字段用sql语句改成convert(int,status),convert(bit,status)似乎都不行。
部分代码
dim vSourceData as new datatable
                    Dim cs As CellStyle = fg.Styles.Add("bool")
                    cs.DataType = GetType(Boolean)
                    cs.ImageAlign = ImageAlignEnum.CenterCenter
                    fg.Cols(i + 1).Style = cs

            fg.DataSource = vSourceData

3 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2017-2-3 12:07:40
沙发
谢谢您的反馈。
根据您提示的内容,推测不出是什么问题,麻烦提供可以重现问题的Demo,我帮您看看。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
chenfeng1029
金牌服务用户   /  发表于:2017-2-3 15:00:36
板凳
我写的一个类中的函数。fg=c1flexgrid
传递过去的查询得到的Datatable中有一个status字段,系统是varchar(1)。
我查询语句是特意更改了类型convert(big,status) as Status.
我先从特定的表中读取字段设置信息,然后把查询语句绑定到表格,但checkbox缺没有正常显示。看图片。
    Public Sub BindData(ByVal vSourceData As DataTable, Optional vLockColor As Long = 0)
        Dim dt As New DataTable
        dt = GetDataInfo()
        With fg
            .Redraw = False

            .AutoGenerateColumns = False
            .Rows(0).TextAlign = TextAlignEnum.CenterCenter

            For i As Integer = 0 To dt.Rows.Count - 1

                .Cols(i + 1).Caption = dt.Rows(i)("col_Caption").ToString()
                .Cols(i + 1).Name = dt.Rows(i)("Col_FieldName").ToString()
                .Cols(i + 1).Width = Convert.ToInt32(dt.Rows(i)("col_width").ToString())
                If dt.Rows(i)("Col_ReadOnly").ToString() = "1" Then

                    Dim cs As CellStyle = fg.Styles.Add("Lock")
                    cs.DataType = GetType(String)


                    .Cols(i + 1).Style = cs
                    .Cols(i + 1).AllowEditing = False
                    .Cols(i + 1).TextAlign = TextAlignEnum.LeftCenter

                    If vLockColor = 1 Then
                        cs.BackColor = Color.AliceBlue
                        cs.ForeColor = Color.MidnightBlue
                    End If
                End If
                If dt.Rows(i)("Col_Visible").ToString() = "0" Then
                    .Cols(i + 1).Visible = False
                End If
                '//数字类型
                If dt.Rows(i)("Col_Number").ToString = "1" And dt.Rows(i)("Col_CheckBox").ToString = "0" Then
                    Dim cs As CellStyle = fg.Styles.Add("Number")
                    cs.DataType = GetType(Decimal)
                    cs.Format = "0.00"
                    .Cols(i + 1).Style = cs

                    '//  .Cols(i + 1).DataType = System.Decimal

                    '     NumCell.DecimalPlaces = Convert.ToInt32(dt.Rows(i)("Col_Decimal").ToString())

                End If
                If dt.Rows(i)("Col_CheckBox").ToString = "1" Then
                    Dim cs As CellStyle = fg.Styles.Add("bool")
                    cs.DataType = GetType(Boolean)
                    cs.ImageAlign = ImageAlignEnum.CenterCenter

                    .Cols(i + 1).Style = cs

                End If
            Next

            .Cols.Count = dt.Rows.Count + 1
            .DataSource = vSourceData

            .Redraw = True
        End With

    End Sub

本帖子中包含更多资源

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

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2017-2-3 17:08:57
地板
chenfeng1029 发表于 2017-2-3 15:00
我写的一个类中的函数。fg=c1flexgrid
传递过去的查询得到的Datatable中有一个status字段,系统是varchar( ...

谢谢您的反馈。
从您提供的代码推测不出问题,麻烦您提供可以重现问题的Demo,我帮您看看。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部