1

VarEmpID 変数で正しい従業員 ID を取得しています。削除をクリックすると、それは私に与えています

タイプ 'System.Data.Linq.DataQuery`1[my name space]' のオブジェクトをタイプ 'namespace' にキャストできません。

ここにコードを入力してください

    Protected Sub radGrid1_DeleteCommand(ByVal source As Object, ByVal e As  GridCommandEventArgs) Handles radGrid1.DeleteCommand

          Dim VarEmpId As String = (CType(e.Item, GridDataItem)).OwnerTableView.DataKeyValues(e.Item.ItemIndex)("EmpId").ToString()

          Using dc1 As New EmployeesDataClassesDataContext()

            Dim EmployeeEntry = (From p In dc1.Employees
            Where (p.EmpId = VarEmpId)
                                Select p)

            dc1.Employees.DeleteOnSubmit(EmployeeEntry)
            dc1.SubmitChanges()

            Dim queryResults = (From queryItem In EmployeeEntry Select queryItem).ToList()
            If queryResults.Any Then
                radGrid1.DataSource = queryResults
                radGrid1.DataBind()
            End If

        End Using



    End Sub
4

2 に答える 2

1
dc1.Employees.DeleteOnSubmit(EmployeeEntry) 

このメソッドは Employee インスタンスを想定しています。代わりに、従業員クエリを渡しました。

Dim EmployeeEntry = ( query )

これはクエリであり、エントリではありません。Enumerable.First を呼び出してクエリの最初の結果を取得し、それを削除することを検討してください。

于 2012-07-26T18:12:21.580 に答える
0

追加されたDimEmployeeEntry=(From p In dc1.Employees Where(p.EmpId = VarEmpId)Select p).singleorDefault()その後、queryresults部分をコメントアウトし、データを再度バインドすると、問題が解決しました。–smilingLily

于 2012-07-26T20:35:40.540 に答える