qingtong1166 发表于 2016-12-7 06:51:11

插入文档中的checkbox以二进制格式保存到数据库中再打开后变成?了

如题。

gw0506 发表于 2016-12-7 09:31:45

我需要看你保存和加载的代码。
出现?应该是字符编码集的问题。

qingtong1166 发表于 2016-12-8 21:22:56

插入复选框的代码:
      TextControl1.Selection.FontName = "Arial Unicode MS"
      'UNCHECKED = UnicodeHexToString("\\u2610")
      'CHECKED = UnicodeHexToString("\\u2714")
      ' 通过特殊的适配器类型创建一个复选框
      Dim clsCheckBox As TXTextControl.DocumentServer.Fields.FormCheckBox = New TXTextControl.DocumentServer.Fields.FormCheckBox()
      clsCheckBox.Text = UNCHECKED
      'clsCheckBox.Text = "clsCheckBox.Text = UNCHECKED;";
      clsCheckBox.Enabled = True
      clsCheckBox.ApplicationField.Editable = True
      clsCheckBox.ApplicationField.DoubledInputPosition = True

      ' 将 ApplicationField 添加到文档中
      TextControl1.ApplicationFields.Add(clsCheckBox.ApplicationField)单击事件:
      Private Sub TextControl1_TextFieldClicked(ByVal sender As System.Object, ByVal e As TXTextControl.TextFieldEventArgs) Handles TextControl1.TextFieldClicked
      Dim field As TXTextControl.ApplicationField = CType(e.TextField, TXTextControl.ApplicationField)
      If Not field Is Nothing Then
            If field.TypeName = "FORMCHECKBOX" Then
                Dim chkb As TXTextControl.DocumentServer.Fields.FormCheckBox = New TXTextControl.DocumentServer.Fields.FormCheckBox(field)
                If chkb.Enabled = False Then Exit Sub
                If field.Text = UNCHECKED Then

                  chkb.Checked = True
                  chkb.Text = CHECKED

                ElseIf (field.Text = CHECKED) Then

                  chkb.Checked = False
                  chkb.Text = UNCHECKED
                End If

            End If
            End If
    End Sub
保存到数据库:
      Dim strData As Byte()
      Me.TextControl1.Save(strData, TXTextControl.BinaryStreamType.InternalFormat)
         Dim newRow As DataRow
                newRow = dt.Rows.Add
                newRow.Item("templetID") = Me.TextBox1.Text
                newRow.Item("templetclass") = ComboBox1.Text
                newRow.Item("templetname") = TextBox3.Text
                newRow.Item("templetText") = sData
      ....
从数据库调入:
   sData=dt.rows(0).Item("templettext")
      Me.TextControl1.Load(sData, TXTextControl.BinaryStreamType.InternalFormat)

gw0506 发表于 2016-12-9 11:47:21

UnicodeHexToString这个方法是啥,哪里来的。其他代码没啥问题,现在就换一这个有问题。你在测一测。

qingtong1166 发表于 2016-12-9 14:24:02


UNCHECKED = UnicodeHexToString("\\u2610")
CHECKED = UnicodeHexToString("\\u2714")
...
Private Function UnicodeHexToString(ByVal text As String) As String
      'returns the string representation
      Dim myText As String
      myText = System.Text.Encoding.Unicode.GetString(BitConverter.GetBytes(Short.Parse(text.Substring(3), System.Globalization.NumberStyles.HexNumber)))
      'Return System.Text.Encoding.Unicode.GetString(BitConverter.GetBytes(Short.Parse(Text.Substring(2), System.Globalization.NumberStyles.HexNumber)))
      Return myText
    End Function

gw0506 发表于 2016-12-9 14:45:13

你存进去的就是encoding过的,再读出来没有做处理,就成?了,应该就这个原因。
页: [1]
查看完整版本: 插入文档中的checkbox以二进制格式保存到数据库中再打开后变成?了