0

我无法在 ItemCommand 上的自动生成的 RadGridView 中获取列名。问题是列是动态数据透视表的结果。这是我的数据的样子(SQL Server 2012):

数据透视前的数据 数据透视前的数据

透视后的数据 在此处输入图像描述

因此,我将 WorkWeek 值设为列,并将 WorkHours 作为这些列中的值。

我的 RadGridview 中的更新命令可以按原样用于静态表,但是枢轴(以及由此产生的列名更改)会使工作变得混乱。这是更新命令:

        For Each editedItem As GridEditableItem In RadGridViewExcelGridTest.EditItems
            Dim newValues As Hashtable = New Hashtable
            e.Item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem)

            SqlDataSourceExcelGridTest.UpdateParameters.Clear()
            SqlDataSourceExcelGridTest.UpdateParameters.Add("DepartmentNumber", newValues("DepartmentNumber"))
            SqlDataSourceExcelGridTest.UpdateParameters.Add("ProjectNumber", newValues("ProjectNumber"))
            SqlDataSourceExcelGridTest.UpdateParameters.Add("Alias", newValues("Alias"))
            SqlDataSourceExcelGridTest.UpdateParameters.Add("WorkWeek", newValues("WorkWeek"))
            SqlDataSourceExcelGridTest.UpdateParameters.Add("WorkHours", newValues("WorkHours"))
            SqlDataSourceExcelGridTest.Update()

            editedItem.Edit = False
        Next

我检查了我的 SQL Server Profiler,发现 DepartmentNumber、ProjectNumber 和 Alias 值正在正确地传递给我的存储过程。但是,WorkWeek 和 WorkHours 传递 NULL。这是意料之中的,因为这些列在网格中不存在。如果我查看哈希表中的键/值,我会以“2013-10-25 : 45”的格式看到它们(例如)。因此,我需要传递列的 UniqueName,而不是传递 newValues("WorkWeek"),并将其与 WorkHours 一起使用。

关于如何获取已编辑项目列的 UniqueName 的任何想法?

谢谢!

卡尔

4

1 回答 1

0

万一其他人遇到这种情况,以下是解决方法:

    Dim columns As Array
        columns = RadGridViewExcelGridTest.MasterTableView.RenderColumns
        For Each editedItem As GridEditableItem In RadGridViewExcelGridTest.EditItems
            Dim newValues As Hashtable = New Hashtable
            For Each column As GridColumn In columns
                If (column.UniqueName <> "ExpandColumn" And column.UniqueName <> "RowIndicator" And column.UniqueName <> "DepartmentNumber" And column.UniqueName <> "ProjectNumber" And column.UniqueName <> "Alias" And column.UniqueName <> "Project" And column.UniqueName <> "Name") Then
                    e.Item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem)

                    Dim columnValue As String = newValues(column.UniqueName)

                    SqlDataSourceExcelGridTest.UpdateParameters.Clear()
                    SqlDataSourceExcelGridTest.UpdateParameters.Add("DepartmentNumber", newValues("DepartmentNumber"))
                    SqlDataSourceExcelGridTest.UpdateParameters.Add("ProjectNumber", newValues("ProjectNumber"))
                    SqlDataSourceExcelGridTest.UpdateParameters.Add("Alias", newValues("Alias"))
                    SqlDataSourceExcelGridTest.UpdateParameters.Add("WorkWeek", column.UniqueName)
                    SqlDataSourceExcelGridTest.UpdateParameters.Add("WorkHours", columnValue)
                    SqlDataSourceExcelGridTest.Update()

                    editedItem.Edit = False
                End If
            Next

        Next

归功于 Telerik 管理员 Angel Petrov。

于 2013-11-02T21:52:10.293 回答