2012-05-11 68 views
0

以下を実装するにはどうすればいいですか:私はグリッドビューの上部にチェックボックスを設けたいと思います。チェックボックスをオンにすると、グリッドビューからの非表示の行がすべて表示されますが、未チェックの場合は非表示の行のみが表示されます。グリッドビューの行を制御する1つのチェックボックス

(グリッドビューのヘッダーにはない)一番上に1つのチェックボックスが必要ですが、いくつかの例が見つかりましたが、すべてがチェックボックスを列として持ち、ヘッダーにも追加されています。

これを行うにはどうすればよいでしょうか?

ありがとうございます。

答えて

2

これは、サーバー上でそれを行うための一つの方法です:

次のように私はGridViewのチェックボックスを定義します。

<asp:CheckBox id="cbShowHidden" runat="server" Text="Show Hidden Rows" 
    Checked="true" oncheckedchanged="cbShowHidden_CheckedChanged" AutoPostBack="true" ></asp:CheckBox> 
<br /> 
<asp:GridView ID="gvTest" AutoGenerateColumns="false" runat="server" 
    ShowHeader="true" onrowdatabound="gvTest_RowDataBound"> 
    <Columns> 
     <asp:BoundField DataField="id" HeaderText="id" /> 
     <asp:BoundField DataField="name" HeaderText="name" /> 
     <asp:BoundField DataField="family" HeaderText="family" /> 
     <asp:BoundField DataField="visibility" HeaderText="visibility" /> 
    </Columns> 
</asp:GridView> 

これは、分離コードです:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      PopulateGrid(); 
     } 
    } 
    private void PopulateGrid() 
    { 
     gvTest.DataSource = Enumerable.Range(0, 3000).Select(i => new { id = i, name = 2 * i, family = "Unknown", visibility = i % 3 == 0 ? "Visible" : "Hidden" }); 
     gvTest.DataBind(); 
    } 
    protected void gvTest_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     bool showHidden = cbShowHidden.Checked; 
     if (e.Row.RowType == DataControlRowType.DataRow) 
      e.Row.Visible = showHidden || string.Compare(e.Row.Cells[3].Text, "Visible") == 0; 
    } 
    protected void cbShowHidden_CheckedChanged(object sender, EventArgs e) 
    { 
     PopulateGrid(); 
    } 

この缶jQueryを使用してクライアント上で隠れていることによって大幅に最適化されます。

+0

あなたの答えをありがとう、私は同じようにそれをやった。 – CPM

関連する問題