[ASP.NET MVC 5] Javascript na PartialView

0

Mam taki problem. Chciałem skorzystać z komponentu datatables.net. Problem w zasadzie nie dotyczy tylko tych komponentów a raczej jest to problem ogólny. Mianowicie przy wyświetlaniu grida na głównym widoku i umieszczając na nim referencje (poza tym tak jak standardowo są referencje do bootstrap itp):

<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.10/css/dataTables.bootstrap.min.css">
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.10/js/dataTables.bootstrap.min.js"></script>

Wszystko fajnie działa na głównym widoku. Jeżeli umieszczam tego grida (mam tu na mysli table na którym wykonywana jest metoda DataTable()) na PartialView i wyświetlam na głównym layoucie Grid wygląda jak standarowa bootstrapowa tabelka.

Moje pytanie brzmi czy na widokach Partial należy jakoś powielać referencje do js-ów które na nich używamy?

0

Nie wiem jak inicjalizowana jest ta kontrolka, ale jeśli partial ładowany jest dynamicznie (np. ajaxowo) to prawie na pewno omija go procedura incjalizacji kontrolki w JS wywoływana w momencie załadowania strony (a dopiero potem załadowany jest partial). Spróbuj w jakimś zdarzeniu on loaded czy coś w tym stylu (zależnie od sposobu ładowania partiala) wywolać metodę js inicjalizującą kontrolkę wewnątrz partiala,

0

Partial ładowny jest ajaxowo do jakiegoś div-a (#view). Kontrolka jest ładowana poprzez $('#table').bootstrapTable('load', obj);.

Próbowałem juz na różne sposoby. Wykonywany jest $(document).ready(function () { i w nim próbuje ładować kontolkę lub na ackję kliknięcia na jakiś przycisk ale zachowuje się to tak, że po prostu nic sie nie dzieje. Nie widzi jakby tych referecji które są na głównym widoku. Powtarzając referencje na tym Partial-u kontrolka działa natomiast takie dublowanie generuje kolejne problemy.

0

Wywołanie w docummnet. ready powoduje że inicjalizowane jest wszytsko co powinno być ale dzieije się to jeszcze zanim zostanie załadowany partiaj do diva. Inicjalizację w Partialu powinieneś wywołać w zdarzeniu ajaxowym onSuccess albo analogicznum zależnym od metody ładowania. I podczas inicjalizacji w Partialu nie inicjalizuj wszytskich tabel poprzez #table , tylko nadaj konkretne id tabeli w partialu i w onSuccess ogranicz się tylko do tego ID ( documment.ready inicjalizuj wszytsko)

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