NewRowNeeded事件当 VirtualMode 属性为 true 时,将在用户定位到 DataGridView 底部的新行时发生,适合给新行建立一些默认数据和按规则应该产生的数据,但此时不推荐添加新数据到后台数据表中。因为用户操作有太多的变数,可以把产生的默认值直接赋值给一个临时初始数据对像即可,在用户触发UserAddedRow事件后,再赋值到后台数据也不迟

    1. Private pInitData As OuterExtendItem
    1. Private Sub xDataGridView_NewRowNeeded(sender As Object, e As System.Windows.Forms.DataGridViewRowEventArgs) Handles xDataGridView.NewRowNeeded
    1. If (mHalt) Then
    1. Return
    1. End If
    1. pInitData = New OuterExtendItem()
    1. pInitData.mTitle = ""
    1. pInitData.mValue = ""
    1. End Sub





UserAddedRow事件是在编辑新行时触发,此时适合添加数据到后台数据表中
如例:

    1. Private Sub xDataGridView_UserAddedRow(sender As Object, e As System.Windows.Forms.DataGridViewRowEventArgs) Handles xDataGridView.UserAddedRow
    1. If (mHalt) Then
    1. Return
    1. End If
    1. If (_ExtendList Is Nothing) Then
    1. Return
    1. End If
    1. If (pInitData IsNot Nothing) Then
    1. _ExtendList.addNotEvent(pInitData)
    1. pInitData = Nothing
    1. End If
    1. End Sub

//参考的数据显示代码:
    1. Private Sub xDataGridView_CellValueNeeded(sender As Object, e As System.Windows.Forms.DataGridViewCellValueEventArgs) Handles xDataGridView.CellValueNeeded
    1. If (mHalt) Then
    1. Return
    1. End If
    1. If (e.RowIndex < 0 OrElse e.RowIndex > _ExtendList.Count) Then
    1. Return
    1. End If
    1. If (e.RowIndex = _ExtendList.Count AndAlso pInitData IsNot Nothing) Then
    1. '显示新行的代码
    1. Select Case e.ColumnIndex
    1. Case xColumnTitle.Index
    1. e.Value = pInitData.mTitle
    1. Case xColumnValue.Index
    1. e.Value = pInitData.mValue
    1. End Select
    1. Else
    1. With _ExtendList
    1. Select Case e.ColumnIndex
    1. Case xColumnTitle.Index
    1. e.Value = .Item(e.RowIndex).mTitle
    1. Case xColumnValue.Index
    1. e.Value = .Item(e.RowIndex).mValue
    1. End Select
    1. End With
    1. End If
    1. End Sub


    1. Private Sub xDataGridView_CellValuePushed(sender As Object, e As System.Windows.Forms.DataGridViewCellValueEventArgs) Handles xDataGridView.CellValuePushed
    1. If (mHalt) Then
    1. Return
    1. End If
    1. If (e.RowIndex < 0 OrElse e.RowIndex >= _ExtendList.Count) Then
    1. Return
    1. End If
    1. With _ExtendList(e.RowIndex)
    1. Try
    1. Select Case e.ColumnIndex
    1. Case xColumnTitle.Index
    1. .mTitle = e.Value
    1. Case xColumnValue.Index
    1. .mValue = e.Value
    1. End Select
    1. .raiseValueChangedEvent(_ExtendList, EventArgs.Empty) //触发列表变化事件
    1. Catch exp As Exception
    1. MyHub.mBase.mDebugLog.writerError(Me, exp)
    1. Finally
    1. End Try
    1. End With
    1. End Sub
    1.   '列表变化事件,此处只要根据实际数据,设置行数即可
    1. Private Sub listChanged(sender As Object, ByVal e As DBListChangedEventArgs(Of OuterExtendItem))
    1. If (Me.InvokeRequired) Then
    1. Me.BeginInvoke(New EventHandler(Of DBListChangedEventArgs(Of OuterExtendItem))(AddressOf listChanged), New Object() {sender, e})
    1. Else
    1. xDataGridView.RowCount = _ExtendList.Count + 1 //行数+1行
    1. xDataGridView.Refresh()
    1. End If
    1. End Sub
RowsAdded事件,此事件是指在表格增加新行时触发,在初始化数据增加新行和后期编辑增加新行时都会触发此事件,而UserAddedRow事件一般是指在编辑阶段由用户操作触发的增加新行事件,二者有所区别,UserAddedRow事件使用率会比较高一点,RowsAdded事件适用于产生一些根据绑定数据需要额外显示的信息时。

NewRowNeeded和UserAddedRow事件以及RowsAdded的区别使用的更多相关文章

  1. html5与js关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的value点击全选状态onclick="select();"。做购物车页面时会要用到。

    关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的点击全选状态onclick="s ...

  2. 总结oninput、onchange与onpropertychange事件的用法和区别 书写搜索的神奇代码

    总结oninput.onchange与onpropertychange事件的用法和区别 最近手机开发一个模糊搜索的功能组建,在网上就找到这篇文章! 前端页面开发的很多情况下都需要实时监听文本框输入,比 ...

  3. C#事件与委托的区别

    C#事件与委托的区别 1. 委托 事件是利用委托来定义的,因此先解释委托.委托是一个类,它与其他类如int,string等没有本质区别,int代表的是所有的整形,而string代表的是字符串,委托则代 ...

  4. JavaScript之onXXXX事件和addEventListener的区别

    JavaScript之onXXXX事件和addEventListener的区别 1.首先介绍两者的用法: 1.1onXXXX的用法:以onclick为例 第一种: obj.onclick = func ...

  5. JavaScript事件onblur与onfocus区别

    一.onblur 1.1 说明 onblur属性在元素失去焦点时触发,onblur常用于表单验证代码(例如用户离开表单字段). 1.2 示例 <input type="text&quo ...

  6. 在元素上写事件和addEventListent()的区别

    在元素上写事件和addEventListent()的区别1. onclick添加事件不能绑定多个事件,后面绑定的会覆盖前面的.而addEventListener能添加多个事件绑定,按顺序执行.2. a ...

  7. 总结oninput、onchange与onpropertychange事件的用法和区别,onchange

    前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...

  8. Qt事件和信号的区别 .

    仔细来看,事件与信号其实并无多大差别,从我们对其需求上来说,都只要能注册事件或信号响应函数,在事件或信号产生时能够被通知到即可.但有一项区别在于,事件处理函数的返回值是有意义的,我们要根据这个返回值来 ...

  9. 实时监听文本框输入 oninput、onchange与onpropertychange事件的用法和区别

    前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...

随机推荐

  1. ubuntu 桌面

    u盘虚拟光驱打开.ios,读写到u盘 goagent:wine goagent.exe的路径:右键在终端中运行proxy.py. 终端中wine exe文件 ubuntu安装镜像文件: 下载压缩包解压 ...

  2. html/php, 二个文本框求和,在第三个框中显示

    我想要实现的是第三个文本框本来输出的是默认值,按了提交按钮之后,显示了一个我通过php某个计算后想要输出的值,如何实现?就好比说:我输入两个数,我按了个提交按钮之后,那个第三个文本框本来输出是“输出框 ...

  3. 钥匙计数之一 - HDU 1438(状态压缩打表)

    分析:首先想到每个钥匙的结尾有4种状态,不过题目还需要判断有三种不同的钥匙深度,所以每种深度结尾后有2^4种状态,0000->1111,不过题目还需需要有相邻的钥匙深度大于等于3,所以需要两种不 ...

  4. 浅谈qmake之pro、pri、prf、prl文件

    浅谈qmake之pro.pri.prf.prl文件 转载自:http://blog.csdn.net/dbzhang800/article/details/6348432 尽管每次和cmake对比起来 ...

  5. the partition number

    有一个容量为n的背包,有1, 2, 3, ..., n这n种物品,每种物品可以无限使用,求装满的方案数. 法一: http://mathworld.wolfram.com/PartitionFunct ...

  6. c#基础语言编程-按值类型和引用类型传递参数

    引言 在介绍传递参数介绍前,请明白参数类型和传递方式是不同的.传递方式分为按值类型和引用类型传递参数.参数类型有值类型和引用类型,这个和C++是不同的.这里的传递方式对应c++中的深复制和浅复制. 两 ...

  7. 通过mybatis读取数据库数据并提供rest接口访问

    1 mysql 创建数据库脚本 -- phpMyAdmin SQL Dump -- version 4.2.11 -- http://www.phpmyadmin.net -- -- Host: lo ...

  8. StopWatch

    附件 http://download.csdn.net/detail/teststudio/6575241 主窗体UNIT unit MainForm; interface uses Windows, ...

  9. phpmailer邮件类下载(转)

    PHPMailer是一个用于发送电子邮件的PHP函数包.它提供的功能包括:*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址*.支持多种邮件编码包括:8bit,base64,binary和qu ...

  10. android 06 LinearLayout

    xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:la ...