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 プロファイラーを確認したところ、DepartmentNumber、ProjectNumber、および Alias の値がストアド プロシージャに正しく渡されていることがわかりました。ただし、WorkWeek と WorkHours は NULL を渡します。これらの列はグリッドに存在しないため、これは当然のことです。ハッシュテーブルのキー/値を見ると、「2013-10-25 : 45」の形式で表示されます (たとえば)。そのため、newValues("WorkWeek") を渡す代わりに、列の UniqueName を渡し、それを 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 に答える