0
如何實現以下功能:我想在GridView頂部有一個複選框。當複選框被選中時,應該顯示gridview中的所有隱藏行,但是何時未選中應該只顯示取消隱藏的行。一個用於控制gridview行的複選框
我只需要在頂部的一個複選框(不是在gridview的頭部),我發現了幾個例子,但所有的複選框作爲列,然後添加到標題以及。
這樣做的最好方法是什麼?
在此先感謝。
如何實現以下功能:我想在GridView頂部有一個複選框。當複選框被選中時,應該顯示gridview中的所有隱藏行,但是何時未選中應該只顯示取消隱藏的行。一個用於控制gridview行的複選框
我只需要在頂部的一個複選框(不是在gridview的頭部),我發現了幾個例子,但所有的複選框作爲列,然後添加到標題以及。
這樣做的最好方法是什麼?
在此先感謝。
這是做它在服務器上的一種方法:
我定義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隱藏客戶端來進行優化。
感謝您的回答,我也設法以類似的方式做到這一點。 – CPM