Detailsview, Linq, wczytanie ostaniego recordu po dodaniu

0

Witam, mam część projektu gdzie jest Gridview i Detailsview w formie master->details.
Nowe rekordy dodawane są w DetailsView. Po otworzeniu strony DetailsView
jest w trybie "DetailsViewMode.Insert". Następnie po wpisaniu danych na
kontrolkę i przyciśnięciu "Dodaj" chciałbym zobaczyć DetailsView w
trybie "DetailsViewMode.ReadOnly" w którym jest dodany przed chwilą
rekord. Myślałem, żeby zrobić coś takiego, że wydarzeniu
DetailsView1_ItemInserted wyciągnąć z bazy największe id i wstawić do
kontrolki Detailsview np tak:

 if (GridView1.SelectedRow == null)
{
DetailsView1.DefaultMode = DetailsViewMode.ReadOnly;
LinQtoSqlSprzedawcaDataContext context1=newLinQtoSqlSprzedawcaDataContext();
                            var readlastrecord = (from a in context1.ZmiennyKlients
                             where (a.id == (context.ZmiennyKlients.Max(a1 => a1.id)))
                                                  select a);
                            DetailsView1.DataSourceID = null;
                            DetailsView1.DataSource = readlastrecord;
                            DetailsView1.DataBind();
                        }

lecz niestety to nie działa. W linq jestem świeżakiem i nie wiem czy dobrze napisałem
zapytanie. Też nie wiem czy dobrze się nakierowuję, żeby to rozwiązać ??

0

Sprawdź:

DetailsView1.DataSource = readlastrecord.FirstOrDefault();

Bo z tego co piszesz to mam wrażenie, że potrzebujesz jedną encję, a nie całą kolekcję. Twoje zapytanie LINQ zwraca kolekcję (bo potencjalnie do warunku z MAX może pasować więcej niż jeden rekord).

0

Po wstawieniu mam błąd "Data source is an invalid type. It must be either an IListSource, IEnumerable, or IDataSource."
Chodzi mi dokładnie, aby po insercie nowego rekordu do bazy danych mssql, pobrać dokładnie ten rekord który przed chwilą był wstawiany i wstawić dane do Detailsview w trybie readonly.

1 użytkowników online, w tym zalogowanych: 0, gości: 1