2009-10-20 7 views
6

Otrzymuję ten błąd po kliknięciu przycisku/łącza Delete w formancie GridView.LinqDataSource nie obsługuje właściwości Select po włączeniu operacji Delete, Insert lub Update

LinqDataSource [DataSource] nie obsługuje Wybierz właściwość gdy na usuwanie, wstawianie lub zaktualizować operacje są włączone

ja naprawdę nie rozumiem dlaczego ja dostaję ten błąd, ponieważ już mam zrobiłem to samo na innej stronie w mojej witrynie, jednak tablica, z której dane są odczytywane, nie ma żadnych kluczy obcych, ta robi. Czy to dlatego otrzymuję błąd? Jeśli jest to ważne, właściwość AutoGenerateDeleteButton jest ustawiona na True i używam pliku linqdatasource do pobierania danych z bazy danych.

Wszelkie dane wejściowe będą mile widziane :)

Odpowiedz

11

W końcu musiałem wybrać wszystkie dane (za pomocą opcji * w kreatorze DataSource), a następnie usunąć kolumny, które nie mają być wyświetlane w GridView. To może być trochę nieefektywne, ale zadziałało.

1

Wpadłem na ten problem i znalazłem rozwiązanie i wyjaśnienie w innym miejscu.

Instrukcja Select daje typ anonimowy, który nie może zostać zamapowany podczas generowania instrukcji Delete/Update/Insert przez LinqDataSource. Tabela źródłowa (linq) służy do generowania metadanych dla operacji na bazie danych.

Będziemy musieli żyć z małą utratą wydajności, gdy potrzebujemy odzyskać wszystkie kolumny w źródle danych, ale dostaniemy trochę pracy za kulisami. Ja lubię.

Jeśli używasz GridView, musisz określić właściwość DataKeyNames na kluczach podstawowych źródła danych.

Krystalicznie czysta !? ;)

0

Oczywiście problem polega na tym, że musisz uwzględnić klucz podstawowy w konfiguracji źródła danych, a następnie zaznaczyć jako niewidoczny ten klucz podstawowy.

Powiązane problemy