datagrid保存时无法提交更新的问题

如果绑定了datagrid,在datagrid中对数据进行更改后,点击窗体中的toolbar按钮进行保存时,最后输入的那个数据,如果焦点没有移开,在保存的时候就得不到提交,只有移开焦点的时候才能提交!

在csdn的贴子上搜索了很久,发现很多人都是建议不用toolbar,而是用button控件,网友covis的解释是“用带SELECTED属性的控件提交数据即可。可能你用TOOLBAR的按钮或其它没有SELECTED属性的控件提交数据的。因为他不能被选中,所以他不能接受焦点,一般的按钮或控件可以将其它控件的焦点转移到自己身上。从这里去考虑。”原文在:http://search.csdn.net/expert/topic/52/5201/2003/4/21/1688615.htm

但是由于笔者所有的toolbar都已经做好了,再更改起来麻烦也不美观,能不能找到其它方法来实现呢?

经过一些摸索,发现了如下的方法可以实现:

    Public Sub SaveData()
        '检查当前焦点是否在datagrid上,是就切换单元格,并提交更改。
        If Me.ActiveControl.Parent.GetType Is GetType(DataGrid) Then
            Dim dg As DataGrid = CType(Me.ActiveControl.Parent, DataGrid)
            ChangeCurrentCell(dg)
            Me.BindingContext(dg.DataSource).EndCurrentEdit()
        End If

       .....save代码

    End Sub

    Public Function ChangeCurrentCell(ByVal dg As DataGrid) As Boolean
        Try
            Dim temp As DataGridCell = dg.CurrentCell

            dg.CurrentCell = New DataGridCell(temp.RowNumber, 0)
            dg.CurrentCell = temp
            Return True
        Catch ex As Exception
            Return False
        End Try

    End Function

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 EasyUI 的 DataGrid 组件,你可以使用它提供的编辑器和验证规则来校验单元格的必填项。下面是一种实现方式: 1. 首先,为 DataGrid 中需要校验的列配置编辑器,比如使用 text 或 combobox 编辑器。可以通过设置 `editor` 属性来指定编辑器类型。 2. 然后,在 DataGrid 的 `onBeforeSave` 事件中获取当前编辑的行数据,并进行必填校验。可以通过获取编辑器的值或其他方式来判断单元格是否有值。 3. 如果单元格没有值,则可以通过返回 false 来阻止保存操作,并弹出提示信息告知用户。 下面是一个示例代码: ```javascript $('#datagrid').datagrid({ // 配置列信息,包括编辑器和验证规则 columns: [{ field: 'name', title: '姓名', editor: { type: 'text' }, // 配置验证规则,设置为必填项 validate: { rules: { required: true }, messages: { required: '该字段为必填项' } } }, { field: 'age', title: '年龄', editor: { type: 'text' }, validate: { rules: { required: true }, messages: { required: '该字段为必填项' } } }], // 配置保存前的事件 onBeforeSave: function(index, row) { // 遍历列定义,判断必填项是否有值 var isValid = true; var columns = $(this).datagrid('getColumnFields'); for (var i = 0; i < columns.length; i++) { var field = columns[i]; var col = $(this).datagrid('getColumnOption', field); if (col.validate && col.validate.rules && col.validate.rules.required) { var value = row[field]; if (!value || value.trim() === '') { isValid = false; // 弹出提示信息 $.messager.alert('提示', col.validate.messages.required, 'warning'); break; } } } return isValid; } }); ``` 以上代码中,我们通过配置 `editor` 和 `validate` 属性来定义列的编辑器和验证规则。在 `onBeforeSave` 事件中,我们遍历列定义,判断必填项是否有值,若没有则阻止保存操作并弹出提示信息。 你可以根据自己的实际需求进行修改和扩展。希望能对你有所帮助!如有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值