一个datagrid与数据表绑定,某一列数据类型为nvarchar,长度20,
在datagrid中修改次列时如何控制长度只能输入20位,目前好象都没有此功能
或者有什么好的控件能達到此功能,請教

解决方案 »

  1.   

    Private Sub dgAsset_AfterColEdit(ByVal ColIndex As Integer)    sAssetSpecDataGrid = dgAssetSpec.Columns(dgAsset.Col).Caption    Select Case sAssetSpecDataGrid
        Case "参数"
                 If len(dgAsset.Columns(0).Text) > 20Then
                   msgbox "========"
                 end if
        End SelectEnd Sub
      

  2.   

    private sub datagrid1_keypress(keyascii As Integer)
    if datagrid1.col = 1 then  '假定是列1
       select case keyascii
       case 8, 9, 13  '放行tab, backspace, enter键
       case else
       if lenb(strconv(datagrid1.text & chr(keyascii), vbFromUnicode)) > 20 then
          keyascii = 0
       endif
       end select
    endif
      

  3.   

    1、同意 qingming81(晴明) 
    2、在数据库里限制,提交数据时会自动弹出错误
      

  4.   

    用Text是可以没错,但控制比较麻烦,我有用过
    多谢各位指点,of123() 您的我修正如下:请指教If DataGrid1.Col = 1 Then
       Select Case keyascii
              Case 8, 9, 13     'tab, backspace, enter¼ü
              Case Else
                   if LenB(StrConv(DataGrid1.Text & Chr(keyascii), vbFromUnicode)) -                  LenB(StrConv(DataGrid1.SelText & Chr(keyascii), vbFromUnicode)) > Rs(DataGrid1.Columns(index).DataField).DefinedSize Then
                              keyascii = 0
                   End If
        End Select
    End If'Rs为绑定Datagrid1的记录集
      

  5.   

    稍作修正LenB(StrConv(DataGrid1.SelText, vbFromUnicode))应去掉 & Chr(keyascii)If DataGrid1.Col = 1 Then
       Select Case keyascii
              Case 8, 9, 13     'tab, backspace, enter¼ü
              Case Else
                   if LenB(StrConv(DataGrid1.Text & Chr(keyascii), vbFromUnicode)) -                  LenB(StrConv(DataGrid1.SelText, vbFromUnicode)) > 
                      Rs(DataGrid1.Columns(index).DataField).DefinedSize Then
                      keyascii = 0
                   End If
        End Select
    End If'Rs为绑定Datagrid1的记录集