2009-07-02 18 views

cevap

5

aksi takdirde üzerinde korkunç verimsiz olacaktır her satır, her hücreyi bir stil uygulamak zorunda ve büyük olasılıkla asmak, bunun için COLGROUP kullanmak istiyorum Tarayıcı, özellikle ızgara büyükse. Üçüncü taraf bir kütüphaneye (jQuery) dayanan yukarıda bahsedilen cevapların tümü, yavaş/tembel bir şekilde yapıyor. Tüm Javascript istemci tarafında çalıştığından, verimlilik söz konusu olduğunda muhtemelen daha fazla düşünmek isteyebilirsiniz.

function hideColumns(tableId, colIndexArray) { 
    var tbl = document.getElementById(tableId); 
    if(!tbl) return; 

    var rows = tbl.getElementsByTagName("TBODY"); 

    if(rows.length == 0) 
    rows = tbl.getElementsByTagName("TR"); 
    else 
    rows = rows[0].getElementsByTagName("TR"); 

    var cols = rows[rows.length - 1].getElementsByTagName("TD"); 
    var colgroup = document.createElement("COLGROUP"); 

    for(var i = 0, l = cols.length; i < l; i++) { 
    var col = document.createElement("COL"); 

    for(var num in colIndexArray) { 
     if(colIndexArray[num] == i) { 
     if(document.all) 
      col.style.display = 'none' 
     else 
      col.style.visibility = 'collapse'; 

     break; 
     } 
    } 

    colgroup.appendChild(col); 
    } 

    tbl.insertBefore(colgroup, tbl.childNodes[0]); 
} 

böyle kullanın

İşte

ya gitmek ... ...

var columnsToHide = [0, 1, 2]; // hide the first 3 columns 
var tableId = "tableIdHere"; // view the source of your page to get this 
hideColumns(tableId, columnsToHide); 

IE7 ve FF3 test: Hide Table Columns Using Javascript

+0

JQuery kullanılmadan doğru bir cevap verin. +1 – epascarello

+0

Datagrids colgroups yaymaz. – Randolpho

+1

LOL! Evet, bu yüzden onları DOM'a enjekte etmek için Javascript kullanıyorum. Aşağı oylama, sadece anlamıyorsun çünkü! –

0

Kullanım jQuery! Bu harika.

Bağlantınız şöyle olabilir:

<a href="javascript:ToggleColumn();">Toggle My Column</a> 

Sizin javascript fonksiyonu şöyle olabilir:

function ToggleColumn() 
{ 
    $(".myColumn").toggle(); 
} 

istenen sütunda üretilen Her öznitelik class = "Sütunum" sahip olmak zorunda kalacaktır javascript'iniz onu bulabilir.

<asp:TemplateColumn runat="server"> 
    <ItemStyle CssClass="myColumn" /> 
</asp:TemplateColumn> 

Ve son olarak, bu gibi bir yerde senin başlık dosyasında jQuery bir bağlantı eklemeyi unutmayın: Bunu yapmak için, aşağıdaki gibi, DataGrid'in istenen sütununa bir <ItemStyle /> unsur ekleyebilir

<script src="/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script> 

download jQuery here.

+1

'sütunu' gerçekten bir HTML değil bunun gibi geçiş yapabileceğiniz eleman. – SolutionYogi

+0

@SolutionYogi: Elbette öyle! JQuery seçici, myColumn sınıfını arıyor. Bu kod harika çalışıyor! :) – JerSchneid

+0

Oldukça değil. ASP.NET'in yapacağı şey, bu sütun için her TD'ye .myColumn sınıfını koymaktır. Böylece, bu bireysel TD'lerin her biri değişecektir. Günah olarak çirkin, ama işe yaramalı. – Randolpho

-1

Kişisel görüşüm JQuery'yi kullanmak olacaktır.

Sütunu bulmak için seçiciyi kullanın ve stile bir 'hidden: true' ekleyin. Bu saf bir JS çözümüdür.

-1

Jquery'yi başkalarının önerdiği gibi kullanın ... bunun gibi bir seçici bir şey yapmalıdır. Bu aslında sütun saklasın 3.

$('table.tableCSS tr').find('td:eq(2)').hide(); // eq(index) 
İlgili konular