【发布时间】:2015-08-27 05:04:15
【问题描述】:
正如DevExpress thread 中所述,我能够上下移动网格行。但是,一旦我从具有 Primary Key 约束的数据库中添加表,它就停止了工作。抛出异常:
列“Id”被限制为唯一。值“101”已经存在
这是我的 MoveDown 代码:
Private Sub BtnMveDwn_Click(sender As Object, e As EventArgs) Handles BtnMveDwn.Click
Dim lObjGrdVew As GridView
Dim lObjDtaTbl As DataTable
Dim lIntIndex As Integer
Dim lObjTmpRow As Object
Try
lObjGrdVew = CType(GrdCntrlMain.FocusedView, GridView)
lObjDtaTbl = TryCast(GrdCntrlMain.DataSource, DataTable)
lIntIndex = lObjGrdVew.FocusedRowHandle
lObjGrdVew.GridControl.Focus()
If lIntIndex >= lObjGrdVew.DataRowCount - 1 Then
Return
End If
lObjTmpRow = lObjDtaTbl(lObjGrdVew.ViewRowHandleToDataSourceIndex(lIntIndex + 1)).ItemArray
lObjDtaTbl(lObjGrdVew.ViewRowHandleToDataSourceIndex(lIntIndex + 1)).ItemArray = lObjDtaTbl(lObjGrdVew.ViewRowHandleToDataSourceIndex(lIntIndex)).ItemArray
lObjDtaTbl(lObjGrdVew.ViewRowHandleToDataSourceIndex(lIntIndex)).ItemArray = lObjTmpRow
lObjGrdVew.FocusedRowHandle += 1
lObjGrdVew.UnselectRow(lObjGrdVew.FocusedRowHandle - 1)
lObjGrdVew.SelectRow(lObjGrdVew.FocusedRowHandle)
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
至于这个thread,我没有尝试过,但是如果列数更高,我必须遍历所有列。即循环。
谢谢
编辑 1 请不要拖放代码。我正在点击按钮。
编辑 2 这儿存在一个问题!我有带有暗淡可见的 展开 按钮的行。就像,如果存在子行,则展开按钮将正确可见但暗淡,就像正常的网格行为一样。但是当交换行时,展开按钮不会改变它们的状态,这是错误的和不可取的。你能解决这个问题吗?
【问题讨论】:
标签: .net vb.net devexpress xtragrid