1

私が望むタイプの更新は、データ自体を処理しません。

シナリオは次のとおりです。A、B、Cの3つの列を持つグリッドビューがあります。ユーザーはチェックボックスa、b、cをクリックして、対応する列を表示するかどうかを指定できます。[明確にするために、これらのチェックボックスはグリッドビューの外部にあります。]

ここで、各チェックボックスがクリックされた後、選択した列のみを表示するグリッドビューをすぐに更新する必要があります。どうすればいいですか?

4

1 に答える 1

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;
  }
于 2012-12-31T19:41:21.990 に答える