2008-10-01 17 views
9

Jak w tytule, czy ktoś wie, jak zamrozić nagłówek GridView w ASP.NET?Jak zamrozić nagłówek GridView?

+0

Możesz sprawdzić [to] (http://stackoverflow.com/questions/130564/i-need-my-html-tables-body-to-scroll-and-its-head-to-stay-put) pytanie. –

Odpowiedz

2

Opcja (a) kup w pakiecie UI, który zawiera zmiksowany GridView z wbudowaną funkcją.

Opcja (b) toczyć własne - to nie jest proste. Dino Esposito has one approach.

EDYCJA: Właśnie zauważyłem, że artykuł Dino łączy się z obszarem wyłącznie subskrybentem na stronie magazynu ASPnetPro.

Oto another approach za pomocą przedłużaczy.

+0

Jak zamarznąć, jeśli nagłówek składa się z nagłówka głównego i liczby nagłówków podrzędnych? – bonCodigo

+0

@bonCodigo - prawdopodobnie uzyskasz lepsze odpowiedzi na swoje pytanie, jeśli zamieścisz je jako osobne pytanie. W takim przypadku prawdopodobnie nie korzystasz z GridView ASP.NET, prawda? –

+0

Mam gridviews w aplikacji internetowej. Ze względu na utrzymywanie odpowiedzi po stronie serwera musimy po prostu trzymać się siatki. Największym wyzwaniem są nagłówki podrzędne. W najgorszym przypadku planujemy umieścić nagłówki w html i ukryć nagłówki przed gridview. Ale mam złe przeczucie, że DML/CRUD nie będzie działał dobrze. – bonCodigo

3

Można to zrobić w css

Zamrożenie Header: 1. Definiowanie klasy .Freezing w arkuszu stylów:

.Freezing 
{ 
    position:relative ; 
    top:expression(this.offsetParent.scrollTop); 
    z-index: 10; 
} 
CssClass

2.Assign DataGrid nagłówka do zamrażania

+3

Ale wydaje się, że działa tylko w IE, a nie w FF :(W każdym razie, dziękuję! :) – rafek

+2

Również wyrażenia nie działają już w IE8. –

+0

Mówiąc dokładniej, wyrażenia nie działają w trybie standardów IE8. – EricLaw

2

ja też w obliczu podobnego problemu rozwijając w aplikacji internetowych w ASP.NET 2.0/3.5.

Pewnego pięknego dnia natknąłem się na IdeaSparks ASP.NET CoolControls. Pomaga wyświetlać nagłówki kolumn, stopkę i pager poprawek.

Użyłem ich osobiście i naprawdę to pokochałem!

To check the control click here : IdeaSparks ASP.NET CoolControls

Nadzieja to pomaga!

2

Myślę, że mam rozwiązanie tego. patrz poniżej kodu javascript

<script type="text/javascript" language="javascript"> 
    var orgTop = 0; 
    $(document).scroll(function() { 
     var id = $("tr:.header").get(0); 
     var offset = $(id).offset(); 
     var elPosition = $(id).position(); 
     var elWidth = $(id).width(); 
     var elHeight = $(id).height(); 
     if (orgTop == 0) { 
      orgTop = elPosition.top; 
     } 
     if ($(window).scrollTop() <= orgTop) { 
      id.style.position = 'relative'; 
      id.style.top = 'auto'; 
      id.style.width = 'auto'; 
      id.style.height = 'auto'; 
     } 
     else { 
      id.style.position = 'absolute'; 
      id.style.top = $(window).scrollTop() + 'px'; 
      id.style.width = elWidth + 'px'; 
      id.style.height = elHeight + 'px'; 

     } 
    }); 
</script> 

gdzie .header jest klasa css z nagłówka siatki.

Wystarczy dodać ten skrypt na stronie i zastąpić header nazwą klasy css używaną w nagłówku.

Powiązane problemy