我用datagrid和rs动态绑定,每次都是从rs中读取数据到datagrid显示,现在碰到一些问题,想请教大家。
1.我现在datagrid.AllowUpdate=False,只允许用户先进行浏览,当用户需要对数据操作的时候通过双击单元格再触发事件,设置AllowUpdate为True,现在的问题是我在datagrid.Dbl_Click事件中写了这么一句,但是好象不大好用啊,经常要多次双击才能有效,而且还不是对当前单元格,要先到其他单元格后再点回到这个单元格才好修改,郁闷,怎么回事呢?
2.当用户浏览后,点“添加”按钮,首先把AllowUpdate=True,然后再AllowAddNew=True,再把datagrid定位到最后一行后面新出来的空白行,但此时只是显示空白行前面有个添加标记,而鼠标没有定位到第0列,等待用户输入,有什么好方法实现这种效果吗?另,如何统计当前datagrid的总行数呢?
3.如何选中整行呢?当用户双击或者单击或者点中某行,通过commandbutton触发?
4.如何选种一个矩形范围的数据?SelStartRow和SelEndRow属性它都没有啊。
5.我好象记得datagrid在单元格的最右边可以出现下拉箭头,做成下拉框形式,但是不知道怎么实现,有人知道吗?
6.还是单元格的问题,当用户点中某个单元格后,可否触发某种事件,是当前单元格变为编辑状态,而其他的单元格仍然保持浏览状态不能被修改呢?呵呵,暂时想到这么多问题,还请各位帮忙,帮我解答一下,如果能有代码示例更好了,非常感谢。

解决方案 »

  1.   

    在datagrid在写如下代码:
    Private Sub DataGrid1_DblClick()
    adorst.Book = DataGrid1.Bookrecedit.ShowEnd Sub
    再在recedit窗体中写如下代码,,,这样就可以双击DataGrid1上任一条都可以进行修改,删除
    Private Sub Form_Load()
    Dim i As Integer
    Set adorst = New Recordset
    adorst.Open "select * from zg ", db, adOpenStatic, adLockOptimistic
    Set DataGrid1.DataSource = adorst
    DataGrid1.Visible = TrueFor i = 0 To adorst.Fields.count - 1
    combol.AddItem (adorst.Fields(i).Name)
    Next i
    combol2.AddItem "="
    combol2.AddItem ">"
    combol2.AddItem ">="
    combol2.AddItem "<"
    combol2.AddItem "<="
    combol2.AddItem "<>"
    combol2.Text = "="
    combol.Text = "职工编号"
    Text1.Text = ""
    Option1.Visible = False
    Option2.Visible = FalseEnd Sub修改:
    Private Sub cmdmodify_Click()
    adorst.Fields("职工编号") = Text1.Text
    adorst.Fields("职工姓名") = Text2.Text
    adorst.Fields("职工年龄") = Text3.Text
    adorst.Fields("职工性别") = Text4.Text
    adorst.Fields("婚姻状况") = Text5.Text
    adorst.Fields("工作时间") = Text6.Text
    adorst.Fields("技术职称") = Text7.Text
    adorst.Fields("所在部门") = Text8.Text
    adorst.Fields("基本工资") = Text9.Text
    MsgBox "修改成功!", vbOKOnly, "警告"
    End Sub删除:
    Private Sub cmddelete_Click()
    Dim i As Integeri = MsgBox("是否确认删除", 1 + vbQuestion, "删除")
    If i = 1 Then
    Recordset.Delete adAffectCurrent                  '仅取消当前记录的挂起更新
    Else
    Unload Me
    End IfEnd Sub
      

  2.   

    换个控件不要用datagrid,用msflexgrid。
      

  3.   

    msflexgrid不允许用户直接在表格上进行修改啊
    而我的客户希望能直接改,这样他们比较直接啊