登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

PDA上让DataGrid单元格可编辑  

2007-07-26 10:26:50|  分类: Windows Mobile |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在PDA设备上不能直接对DataGrid的单元格进行编辑,那么,如何实现单元格可编辑呢?我们可以用TextBox来模拟单元格,让这个TextBox一开始隐藏起来,当点击DataGrid的单元格的时候,在当前单元格的位置显示TextBox.因此我们必须要先获得当前单元格的坐标,然后显示TextBox在该坐标,并且将当前单元格的内容赋给TextBox,当用户修改了TextBox的内容并且离开该单元格时,TextBox将再次被隐藏,同时,单元格的内容被赋为TextBox的最新内容。按照以上的思路我们可以写如下代码:

Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlServerCe

Public Class Form5
    Public conn As New SqlCeConnection("DataSource=\test.sdf")
    Public cmd As SqlCeCommand
    Public adapter As New SqlCeDataAdapter
    Public LineType As Integer
    Private Sql As String
    Private isEditMode As Boolean = False '是否处于编辑模式
    Private isUpdateMode As Boolean = False '是否处于更新模式
    Private editCell As New DataGridCell '编辑的单元格子
    Private cellPos As New Rectangle '单元格的位置

    Private Sub DataGrid1_CurrentCellChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGrid1.CurrentCellChanged
        If isUpdateMode = False Then
            '更新模式
            If isEditMode = True And DataGrid1.CurrentCell.Equals(editCell) = False Then
                '保存当前所在单元格子,因为设置item时候焦点会移出
                isUpdateMode = True
                DataGrid1.Visible = False
                Dim currentcell As New DataGridCell
                currentcell = DataGrid1.CurrentCell

                DataGrid1.Item(editCell.RowNumber, editCell.ColumnNumber) = TextBox1.Text
                DataGrid1.CurrentCell = currentcell
                DataGrid1.Visible = True
                '开始保存编辑结果到数据库中
                '(...)代码略
                '结束保存
                TextBox1.Visible = False
                isUpdateMode = False
                isEditMode = False
            End If

            '编辑模式
            editCell = DataGrid1.CurrentCell
            cellPos = DataGrid1.GetCellBounds(editCell.RowNumber, editCell.ColumnNumber)
            TextBox1.Left = cellPos.Left - 1
            TextBox1.Top = cellPos.Top + DataGrid1.Top - 1
            TextBox1.Width = cellPos.Width + 2
            TextBox1.Height = cellPos.Height + 2
            TextBox1.Visible = True
            TextBox1.Text = DataGrid1.Item(editCell.RowNumber, editCell.ColumnNumber)
            isEditMode = True
        End If

    End Sub

    Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try
            Cursor.Current = Cursors.Default
            conn.Open()
            Sql = "select plandate,linename,planweekday from t_plan where userid=1 order by plandate asc"
            cmd = New SqlCeCommand(Sql)
            cmd.Connection = conn
            adapter.SelectCommand = cmd
            Dim dataset As New DataSet()
            adapter.Fill(dataset, "plan")
            dataset.Tables(0).Columns(0).ColumnName = "日期"
            dataset.Tables(0).Columns(1).ColumnName = "描述"
            dataset.Tables(0).Columns(2).ColumnName = "星期"

            Dim tableStyle As DataGridTableStyle
            tableStyle = New DataGridTableStyle
            tableStyle.MappingName = "plan"
            DataGrid1.TableStyles.Clear()
            DataGrid1.TableStyles.Add(tableStyle)

            DataGrid1.DataSource = dataset.Tables(0)
            DataGrid1.TableStyles("plan").GridColumnStyles(0).Width = 80
            DataGrid1.TableStyles("plan").GridColumnStyles(1).Width = 70
            DataGrid1.TableStyles("plan").GridColumnStyles(2).Width = 54
            conn.Close()

        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    End Sub
End Class

效果演示:

同理,我们可以用DataTimePicker来模拟单元格达到日期编辑的效果,效果图如下:

  评论这张
 
阅读(1946)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018