2009-05-06 10 views
6

Jest to ogólny jaki sposób databind pytania pracy ...DataBind i Postback

Mam prostą stronę z GridView, który jest związany (w kodzie aspx) do ObjectDataSource.

Mogę zaglądać do funkcji Select() wywoływanej przez ObjectDataSource, aby zobaczyć, że jest wywoływana przy początkowym załadowaniu i każdym postu z powrotem. Mam pewną logikę, która ma miejsce w post-backach, które będą miały wpływ na dane GridView, i chcę wywołać GridView.DataBind() później w poście z powrotem, po wprowadzeniu pewnych zmian.

Czy istnieje sposób, aby zapobiec automatycznemu ponownemu wiązaniu, które ma miejsce w każdym odesłaniu? Czy to oznacza, że ​​nie mogę użyć ObjectDataSource dla tego formantu?

Odpowiedz

12

Masz rację, że precyzyjna kontrola, której szukasz, nie jest możliwa i wymaga kodu z tyłu. Obiekty źródłowe danych ASP.NET są niczym innym, jak tylko bólem w **. Przekonasz się, że gdy ich użyjesz, dostaniesz takie sytuacje, które pojawiają się na nowo.

Niektóre z problemów, jakie można znaleźć to:

  • Nie silnie wpisane
  • nieelastyczny (jak już zauważył)
  • Muddy się kod prezentacja

I ve zrobione, aby uzyskać dostęp do wszystkich danych w kodzie za i nie spojrzał z powrotem.

2

Tak. Jeśli chcesz mieć kontrolę nad tym, kiedy pojawi się ta informacja, musisz to zrobić w kodzie.

8

Walczyłem z tym automatycznego wiązania, jak również i myślałem pisać moje rozwiązanie tutaj:

  1. usunąć „DataSourceID” ze strony ASPX, kiedy jego nie jest ustawiony, nie ma automatycznego wiązania
  2. zestaw identyfikator DataSourceID w CodeBehind tylko wtedy, gdy DataBinding jest potrzebny: myGridView.DataSourceID = "MyDataSource";
  3. nie nazywają myGridView.DataBind() jawnie, wiązania z danymi odbywa się automatycznie przy prerender

Zajęło mi trochę czasu, aby dowiedzieć się tego, ale teraz wverything działa dobrze.

Kontekst

Używam ObjectDataSource ponieważ Handels cały stronicowania i sortowania z GridView automatycznie dla mnie. Używam warstwy danych z Linq2SQL i używam jej metod Skip() i Take(), aby załadować tylko ilość danych potrzebnych do zapełnienia jednej strony GridView.

Używanie SelectMethod i SelectCountMethod z ObjectDataSource

+0

Dzięki za sugestię. Poszedłem z sugestią Gavina, by po prostu uniknąć bałaganu. Odtąd moja firma przeszła na Telerik, który obsługuje naprawdę czystą metodę wiązania kodu o nazwie "NeedDataSource".Mimo to, jeśli będę musiał się cofnąć, spróbuję. –

Powiązane problemy