我在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”格式看到它们(例如)。因此,我不需要传递newValues(“WorkWeek”),而是传递列的UniqueName,并将其与WorkHours一起使用。
有关如何获取已编辑项目列的唯一名称的任何想法?
谢谢!
卡尔
答案 0 :(得分: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。