2012-12-31 173 views
1

我想要的刷新類型並不涉及數據本身。如何強制刷新GridView?

這裏的情景: 我有3列A,B和C 一個GridView控件,用戶可以點擊複選框a,b和c鍵使相應的列可見或不可見。 [要清楚,這些複選框位於gridview外部。]

現在我希望gridview刷新後立即顯示每個複選框被單擊後選定的列。我該怎麼做?

回答

1

假設你有一個表中的每一列(網格),你可以寫這樣的事情在jQuery的複選框:

$(function() { 
    $('input:checkbox').change(function() { 
     //get a reference to the corresponding table column 
     var $col = $('<#%=grid.ClientID %>' + ' td:nth-child(' + $(this).val() + ')'); 
     if (this.checked) $col.hide(); 
     else $col.show(); 
    }); 
});​ 

而且相應的複選框有一個值設置爲列索引的表。例如:

<input type="checkbox" value="1" /><-- hides first column in grid--> 
<input type="checkbox" value="2" /><-- hides second column in grid--> 
<input type="checkbox" value="3" /><-- hides third column in grid--> 

一個較短/簡化版本,也可能會爲你工作是這樣的:

$(function() { 
    $('input:checkbox').change(function() { 
     var $col = $('table ' + 'td:nth-child(' + $(this).val() + ')'); 
     $col.toggle(); 
    }); 
});​ 

jsfiddle.

更新 - C#版本

protected void Check_Clicked(Object sender, EventArgs e) 
    { 
    CheckBox theOneClicked= (sender as CheckBox); 
    if(theOneClicked.ID=="checkbox1") 
     myGrid.Columns[0].Visible=false; 
    else if(theOneClicked.ID=="checkbox2") 
     myGrid.Columns[1].Visible=false; 
    else if(theOneClicked.ID=="checkbox3") 
     myGrid.Columns[2].Visible=false; 
    } 
+0

我想使用asp.net,這段代碼似乎不允許我在後面的C#代碼中這樣做。我錯了嗎?謝謝。 – user763554

+0

@ user763554將在幾個中添加相同的C#版本。 – Icarus

+0

@ user763554添加了C#版本,但如果我是你,我會在Jquery中執行它,除非只需要隱藏一列 – Icarus